Що таке файл DBF?
Файл із розширенням .dbf — це файл бази даних, який використовується програмою системи керування базами даних під назвою dBASE. Спочатку база даних dBASE називалася Project Vulcan; започаткований Вейном Ретліффом у 1978 році. Тип файлу DBF був представлений у dBASE II у 1983 році. Він упорядковує кілька записів даних за допомогою полів типу масиву. Програмне забезпечення для баз даних xBase, яке є популярним через його сумісність із широким діапазоном форматів файлів; також підтримує файли DBF.
Формат файлу DBF
Формат файлу DBF належить до системи керування базами даних dBASE, але він може бути сумісний із програмним забезпеченням xBase чи іншими СУБД. Початкова версія файлу dbf складалася з простої таблиці, до якої можна було додавати, змінювати, видаляти або друкувати дані за допомогою набору символів ASCII. З плином часу .dbf було вдосконалено та додано додаткові файли, щоб збільшити функції та можливості системи баз даних.
У сучасному dBASE файл DBF складається із заголовка, записів даних і маркера EOF (кінець файлу).
- Заголовок містить інформацію про файл, таку як кількість записів і кількість типів полів, які використовуються в записах.
- Записи містять фактичні дані.
- Кінець файлу позначається одним байтом зі значенням 0x1A.
Заголовок файлу
Розташування заголовка файлу в dBase наведено в наступній таблиці:
Байт | Зміст | Значення |
---|---|---|
0 | 1 байт | Дійсний dBASE для файлу DOS; біти 0–2 вказують на номер версії, біт 3 вказує на наявність dBASE для файлу memo DOS, біти 4–6 вказують на наявність таблиці SQL, біт 7 вказує на наявність будь-якого файлу memo (або dBASE m PLUS, або dBASE для DOS) |
1–3 | 3 байти | Дата останнього оновлення; у форматі РРММДД |
4–7 | 32-розрядне число | Кількість записів у файлі бази даних |
8–9 | 16-розрядне число | Кількість байтів у заголовку |
10–11 | 16-розрядне число | Кількість байтів у записі |
12–13 | 2 байти | Зарезервований; заповнити 0 |
14 | 1 байт | Позначка, що вказує на незавершену транзакцію[примітка 1] |
15 | 1 байт | Прапор шифрування[примітка 2] |
16–27 | 12 байт | Зарезервовано для dBASE для DOS у багатокористувацькому середовищі |
28 | 1 байт | Прапор файлу .mdx виробництва; 1, якщо є робочий файл .mdx, 0, якщо немає |
29 | 1 байт | ID драйвера мови |
30–31 | 2 байти | Зарезервований; заповнити 0 |
32–п [примітка 3][примітка 4] | 32 байти кожен | масив дескрипторів полів (схему дескрипторів див. нижче) |
n + 1 | 1 байт | 0x0D як термінатор масиву дескриптора поля |
- Функція ISMARKEDO перевіряє цей прапор (ПОЧАТИ ТРАНЗАКЦІЮ встановлює його на 1, ЗАВЕРШАТИ ТРАНЗАКЦІЮ та ВІДКОТИТИ скидати його на 0).
- Якщо для цього прапорця встановлено значення 1, з’являється повідомлення База даних зашифрована.
- Максимальна кількість полів - 255.
- n означає останній байт у масиві дескриптора поля.
Масив дескрипторів полів
Схема дескрипторів полів у dBASE:
Байт | Зміст | Значення |
---|---|---|
0–10 | 11 байт | Назва поля в ASCII (заповнена нулями) |
11 | 1 байт | Тип поля. Дозволені значення: C, D, F, L, M або N (значення див. у наступній таблиці) |
12–15 | 4 байти | Зарезервовано |
16 | 1 байт | Довжина поля в двійковому форматі (максимум 254 (0xFE)). |
17 | 1 байт | Поле десяткового підрахунку в двійковому |
18–19 | 2 байти | ID робочої зони |
20 | 1 байт | Приклад |
21–30 | 10 байт | Зарезервовано |
31 | 1 байт | Прапор поля виробничого MDX; 1, якщо поле має тег індексу в робочому файлі MDX, 0, якщо немає |
Записи бази даних
Кожен запис починається з прапора видалення (1 байт). Поля загорнуті в записи без роздільників полів. Усі дані поля є ASCII. Залежно від типу поля програма накладає додаткові обмеження. Ось типи полів у dBase:
Тип поля | Мнемотехніка | Що він приймає |
---|---|---|
C | Персонаж | Будь-який текст ASCII (доповнений пробілами до довжини поля) |
D | Дата | Числа та символ для розділення місяця, дня та року (зберігаються усередині як 8 цифр у форматі РРРРММДД) |
F | Плаваюча кома | -, ., 0–9 (вирівняно по правому краю, доповнено пробілами) |
L | Логічний | Y, y, N, n, T, t, F, f або ? (при неініціалізації) |
М | Пам’ятка | Будь-який текст ASCII (зберігається усередині як 10 цифр, що представляють номер блоку .dbt, вирівняний по правому краю, доповнений пробілами) |
N | Числовий | -, ., 0–9 (вирівняно по правому краю, доповнено пробілами) |