DBF (Data Base File) — формат хранения данных, используемый в качестве одного из стандартных способов хранения информации в системах управления базами данных.
Формат был разработан Уэйном Рэтлиффом ( Wayne Ratliff) для своей СУБД Вулкан (), разработанной для ОС CP/M и не получившей распространение. Широко стал известен с распространением СУБД dBase II для DOS, созданной им в компании Aston−Tate на основе Вулкана с участием Джорджа Тейта () и Хэла Лашли ().
В новых версиях — dBase III, dBase IV — формат модифицировался и расширялся. Также, благодаря простоте и удобству обработки, стал популярен в разных СУБД, где использовались свои расширения формата. Такие клоны называют общим термином xBase. Из-за отсутствия стандарта не всякая программа может правильно прочитать и корректно записать произвольный файл .DBF.
Общие сведения Основная информация хранится в файле с суффиксом .DBF.
DBF-файл делится на заголовок, в котором хранится информация о структуре базы и количестве записей (в новых версиях — и о некоторых других характеристиках, например используемой кодовой странице), и собственно область данных, представляющую собой последовательно организованную таблицу из записей фиксированной длины. Записи состоят из полей фиксированной длины.
Первый байт файла содержит номер версии формата и битовую маску дополнений.
Запись начинается с признака удаления размером один байт, возможные значения: пробел и «*» (запись помечена на удаление). Физическое удаление помеченных записей производится при выполнении операции «упаковка» (в большинстве СУБД xBase — командой PACK). Удалённые записи могут быть восстановлены до проведения упаковки базы.
Упаковка DBF-файла — процедура физического удаления помеченных на удаление записей из базы данных формата DBF. Первый вариант упаковки (использованный в dBase II) — сортировка записей, когда все помеченные на удаление сдвигаются в конец файла. В более поздних разработках обычно реализуется копированием из исходного файла в новый только валидных записей (не помеченных на удаление), по завершении копирования прежний файл замещается новым.
Дополнительные файлы, появившиеся с развитием формата (перечислены не все): .DBT — содержимое полей типа «memo» (данные переменной длины, обычно текст) dBase III, IV, и Clipper; .FPT — содержимое полей типа «memo» FoxBase, «memo» и «object» FoxPro; .IDX — индексный файл, используется в dBase; .NTX — индексный файл, используется в Clipper; .CDX — индексный файл FoxPro и 1C; .MDX — мультииндексный файл. Файлы дополнительных полей и индексов не являются самостоятельными и не могут быть прочитаны без соответствующего им .DBF-файла. В связи с этим их описание обычно включают в качестве составной части описания формата .DBF.
История Уэйн Рэтлифф начал работать над форматом файлов для СУБД Вулкан в январе 1978 года, и в октябре 1979 года программа Вулкан, использующая первую версию файлов .DBF, была им выпущена в продажу.
В 1980 была выпущена новая версия программы, использовавшая .DBF второй версии, под коммерческим названием dBase II её стали продавать через компанию Ashton−Tate, где работал один из партнёров Рэтлиффа.
Вторая версия формата использовалась также и в dBase III, появившейся в 1984 году. Но уже в dBase III+ (1985 год) была реализована новая, третья версия формата DBF. dBase III и dBase III+ несовместимы по формату файлов.
dBase IV, выпущенная в 1988 году, использовала тоже новую версию формата — четвёртую.
Пятая версия формата DBF была реализована в 1994 году, когда Borland выпустила последнюю версию dBase для DOS — dBase V.
Седьмая версия DBF появилась в 1997 году с выходом dBase 7 (только для Windows).
Описание формата Сведения о формате версии 1, использованном в СУБД Vulcan, не сохранились. Известно только, что максимально допустимое число полей в записи данных было 16.
DBF версии 2 Длина заголовка 520 байт, значение номера версии (первый байт заголовка) — 2, максимальное количество полей в записи данных — 32. № БайтаЗначение0 Version number1−2 Число записей в файле (16−битное число Little endian)3 Год даты последней модификации в файле4 Месяц даты последней модификации в файле5 День даты последней модификации в файле6−7 Длина (каждой) записи данных в файле (16−битное число LE)8−520 Массив описаний полей (32 элемента по 16 байт), завершающийся символом возврата каретки (). Если в структуре файла есть все 32 записи, 520-й байт — .… записи БДEOF Файл завершается символом EOF,
Структура описания поля в массиве описаний полей. Размер: 16 байт. № БайтаЗначение0−10 Имя поля: строка от одного до 10 символов множества «alnum» и завершающий нуль-символ (), обычно лишнее место заполняется нуль-символами.11 Тип поля: C, N или L (символьное, числовое, логическое)12 Длина поля13−14 Адрес поля в памяти ()15 Десятичный счётчик полей ()
Запись начинается с признака удаления длиной в один байт. Запись помечена на удаление, если его значение равно «*» (, символ звёздочки). Нормальное значение — " " (пробел, ).
DBF версии 3 С версии dBase III+ формат файла DBF кардинально изменился: главное изменение — заголовок переменной длины; начальный байт содержит битовую маску: три младших бита — номер версии, бит 7 — наличие файла .DBT с полями типа memo; байт № 28 содержит признак наличия индексного файла и его тип; тип данных D (Data) — дата в формате ГГГГММДД; прочие изменения.
DBF версии 4 Для dBase IV была разработана четвёртая версия формата DBF. Отличия от предыдущих: бит 4 в байте версии совместно с седьмым битом означает новый формат файла с полями типа memo, биты с 4 по 6 — признаки таблиц SQL; тип поля F (float) длиной 20 байт — десятичное число с плавающей точкой; многоиндексные файлы *.MDX.
DBF версии 5 В dBase V использована пятая версия формата DBF. Нововведения: тип поля B (Binary) подобный memo, но для произвольных данных; тип поля G (General) для объектов OLE и подобных.
DBF версии 7 Седьмая версия dBase использует новый формат DBF тоже под номером 7, который кардинально отличается от предыдущих.
Сводная таблица версий Нулевой байт файла DBF содержит номер версии формата и битовые признаки дополнительных файлов. + DBF File type0x02 dBase II и FoxBASE0x03 FoxBASE+ или Dbase III+ без полей типа «memo»0x30 Visual FoxPro0x31 Visual FoxPro с автоинкрементом0x32 Visual FoxPro с полями типов Varchar и/или Varbinary0x43 dBASE IV файл таблиц SQL без полей типа «memo»0x63 dBASE IV системный файл SQL без полей типа «memo»0x83 FoxBASE+ или Dbase III+ с полями типа «memo»0x8B dBASE IV файл таблиц SQL с полями типа «memo»0xCB dBASE IV системный файл SQL с полями типа «memo»0xF5 FoxPro до версии 2.6 с полями типа «memo»0xE5 Clipper Six с файлом SMT (содержит значения полей типа «memo»)0xFB FoxBASE
См. также DBase Clipper XBase
Примечания
Ссылки
— Описание формата файлов Xbase (dBase)
Программа САУРОН для восстановления DBF файлов
Категория:Базы данных Категория:Форматы файлов