Структура базы данных DBF
Файл базы данных состоит из записи заголовка и записей с данными. В записи заголовка определяется структура базы данных и содержится вся другая информация, относящаяся к базе данных. В файле она начинается с нулевой позиции.
Записи с данными (*) следуют за заголовком (байты располагаются последовательно) и включают в себя фактическое содержимое полей. Длина записи (в байтах) определяется суммированием указанных длин всех полей. Числа в данном файле размещаются в обратном порядке.
struct Header {
char id; // Типы файлов с данными
// FoxBASE+/dBASE III +, без memo - 0х03
// FoxBASE+/dBASE III +, с memo - 0х83
// FoxPro/dBASE IV, без memo - 0х03
// FoxPro с memo - 0хF5
// dBASE IV с memo - 0x8B
char modifed[3]; // Последнее изменение (ГГММДД)
long records; // Число записей в файле
int fdata; // Положение первой записи с данными
int ldata; // Длина одной записи с данными (включая признак удаления)
char reserved[16]; // Зарезервированы
char cdxfile; // 1-есть структ.составной инд.файл (типа .CDX),0-нет
char reserved1[3]; // Зарезервированы
char field[32]; // Подзаписи полей (см. ниже) (**)
....
char field[32]; // Подзаписи полей
char end; // Признак завершения записи заголовка (0х01)
}
struct field { // Подзаписи полей
char name[10]; // Название поля (максимально - 10 символов, если
// меньше 10, то дополняется пустым символом (0х00))
char type; // Тип данных:
// C - символьное;
// N - числовое;
// L - логическое;
// M - типа memo;
// D - дата;
// F - с плавающей точкой;
// P - шаблон.
long where; // Расположение поля внутри записи
char length; // Длина поля (в байтах)
char reserved[15]; // Зарезервированы
Примечания по структуре файла с данными.
(*) Данные в файле с данными начинаются с позиции, указываемой в записи заголовка в байтах 08-09. Записи с данными начинаются с байта, содержащего признак удаления. Если в этот байт занесен пробел в коде ASCII (0х20), то запись не удалялась; если же в первом байте - звездочка (0х2A), то запись удалена. За признаком удаления следуют данные из полей, названия которых находятся в подзаписях полей.
(**) Количество полей определяет число подзаписей полей. В базе данных для каждого поля существует одна подзапись поля.
(***) Ограничения по количеству знаков в записи, максимальному числу полей и т.д. смотрите в данном приложении в таблице "Системные возможности".
Системные возможности
| FoxPro | Усоверш. FoxPro |
Максимальное число записей в файле базы данных | 1 миллиард (*) | 1 миллирд (*) |
Максимальное число символов в записи | 4000 | 4000 |
Максимальное число полей в записи | 255 | 255 |
Максимальное число одновременно открытых баз данных | 25 | 25 |
Максимальное число символов в поле базы данных | 254 | 254 |
Максимальное число символов в индексном ключе (.IDX) | 100 | 100 |
Максимальное число символов в индексном ключе (.CDX) | 254 | 254 |
Максимальное число открытых индексных файлов в базе данных | без ограничения (**) | без ограничения (**) |
Максимальное число открытых индексов во всех рабочих областях | без ограничения (**) | без ограничения (**) |
Характеристики полей |
Максимальный размер символьных полей | 254 | 254 |
Максимальный размер числовых (и с плавающей точкой) полей | 20 | 20 |
Максимальное число символов в названиях полей | 10 | 10 |
Точность цифр при числовых вычислениях | 16 | 16 |
FPT | IDX | CDX
|