DBF

DBF (Data Base File) — формат хранения данных, используемый в качестве одного из стандартных способов хранения информации в системах управления базами данных.

Формат был разработан Уэйном Рэтлиффом ( (англ.) Wayne Ratliff) для его СУБД Вулкан (англ. Vulcan), разработанной для ОС CP/M и не получившей распространение. Широко стал известен с распространением СУБД dBase II для DOS, созданной им в компании Aston−Tate на основе Вулкана с участием Джорджа Тейта (англ. George Tate) и Хэла Лашли (англ. Hal Lashlee).

В новых версиях — dBase III, dBase IV — формат модифицировался и расширялся. Также, благодаря простоте и удобству обработки, стал популярен в разных СУБД, где использовались свои расширения формата. Такие клоны называют общим термином xBase. Из-за отсутствия стандарта не всякая программа может правильно прочитать и корректно записать произвольный файл .DBF.

Общие сведения

Основная информация хранится в файле с суффиксом .DBF[1].

DBF-файл делится на заголовок, в котором хранится информация о структуре базы и количестве записей (в новых версиях — и о некоторых других характеристиках, например используемой кодовой странице) и собственно область данных, представляющую собой последовательно организованную таблицу из записей фиксированной длины. Записи состоят из полей фиксированной длины.

Первый байт файла содержит номер версии формата и битовую маску дополнений.

Запись начинается с признака удаления размером один байт, возможные значения: пробел HEX: 20 и «*» HEX: 2A (запись помечена на удаление). Физическое удаление помеченных записей производится при выполнении операции «упаковка» (в большинстве СУБД xBase — командой PACK). Удалённые записи могут быть восстановлены до проведения упаковки базы.

Упаковка DBF-файла — процедура физического удаления помеченных на удаление записей из базы данных формата DBF. Первый вариант упаковки (использованный в dBase II) — сортировка записей, когда все помеченные на удаление сдвигаются в конец файла[2]. В более поздних разработках обычно реализуется копированием из исходного файла в новый только валидных записей (не помеченных на удаление), по завершении копирования прежний файл замещается новым.

Дополнительные файлы, появившиеся с развитием формата (перечислены не все)[3]:

  • .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, была им выпущена в продажу[4].

В 1980 была выпущена новая версия программы, использовавшая .DBF второй версии, под коммерческим названием dBase II её стали продавать через компанию Ashton−Tate, где работал один из партнёров Рэтлиффа[4].

Вторая версия формата использовалась также и в dBase III, появившейся в 1984 году[5]. Но уже в dBase III+ (1985 год)[5] была реализована новая, третья версия формата DBF. dBase III и dBase III+ несовместимы по формату файлов[2].

dBase IV, выпущенная в 1988 году[5], использовала тоже новую версию формата — четвёртую.

Пятая версия формата DBF была реализована в 1994 году, когда Borland выпустила последнюю версию dBase для DOS — dBase V[6].

Седьмая версия DBF появилась в 1997 году с выходом dBase 7 (только для Windows).

Описание формата

Сведения о формате версии 1, использованном в СУБД Vulcan, не сохранились. Известно только, что максимально допустимое число полей в записи данных было 16[2].

DBF версии 2

Длина заголовка 520 байт, значение номера версии (первый байт заголовка) — 2, максимальное количество полей в записи данных — 32[7].

№ Байта Значение
0Version number
1−2Число записей в файле (16−битное число Little endian)
3Год даты последней модификации в файле
4Месяц даты последней модификации в файле
5День даты последней модификации в файле
6−7Длина (каждой) записи данных в файле (16−битное число LE)
8−520Массив описаний полей (32 элемента по 16 байт), завершающийся символом возврата каретки (HEX: OD).

Если в структуре файла есть все 32 записи, 520-й байт — HEX: OD.

записи БД
EOFФайл завершается символом EOF, HEX: 1A

Структура описания поля в массиве описаний полей. Размер: 16 байт.

№ Байта Значение
0−10Имя поля: строка от одного до 10 символов множества «alnum» и завершающий нуль-символ (HEX: 00), обычно лишнее место заполняется нуль-символами.
11Тип поля: C, N или L (символьное, числовое, логическое)
12Длина поля
13−14Адрес поля в памяти (англ. Field adress in memory)
15Десятичный счётчик полей (англ. Field decimal count)

Запись начинается с признака удаления длиной в один байт. Запись помечена на удаление, если его значение равно «*» (HEX: 2a, символ звёздочки). Нормальное значение — " " (пробел, HEX: 20).

DBF версии 3

С версии dBase III+ формат файла DBF кардинально изменился[2][8]:

  • главное изменение — заголовок переменной длины;
  • начальный байт содержит битовую маску: три младших бита — номер версии, бит 7 — наличие файла .DBT с полями типа memo;
  • байт № 28 содержит признак наличия индексного файла и его тип;
  • тип данных D (Data) — дата в формате ГГГГММДД;
  • прочие изменения.

DBF версии 4

Для dBase IV была разработана четвёртая версия формата DBF[9]. Отличия от предыдущих:

  • бит 4 в байте версии совместно с седьмым битом означает новый формат файла с полями типа memo, биты с 4 по 6 — признаки таблиц SQL;
  • тип поля F (float) длиной 20 байт — десятичное число с плавающей точкой;
  • многоиндексные файлы *.MDX.


DBF версии 5

В dBase V использована пятая версия формата DBF[10]. Нововведения:

  • тип поля B (Binary) подобный memo, но для произвольных данных;
  • тип поля G (General) для объектов OLE и подобных.

DBF версии 7

Седьмая версия dBase использует новый формат DBF тоже под номером 7, который кардинально отличается от предыдущих[9][8].

Сводная таблица версий

Нулевой байт файла DBF содержит номер версии формата[9] и битовые признаки дополнительных файлов[8].

DBF File type
0x02dBase II и FoxBASE
0x03FoxBASE+ или Dbase III+ без полей типа «memo»
0x30Visual FoxPro
0x31Visual FoxPro с автоинкрементом
0x32Visual FoxPro с полями типов Varchar и/или Varbinary
0x43dBASE IV файл таблиц SQL без полей типа «memo»
0x63dBASE IV системный файл SQL без полей типа «memo»
0x83FoxBASE+ или Dbase III+ с полями типа «memo»
0x8BdBASE IV файл таблиц SQL с полями типа «memo»
0xCBdBASE IV системный файл SQL с полями типа «memo»
0xF5FoxPro до версии 2.6 с полями типа «memo»
0xE5Clipper Six с файлом SMT (содержит значения полей типа «memo»)
0xFBFoxBASE

См. также

Примечания

Ссылки

  • David B. Powell. From Basement to Boardroom : dBase II author Wayne Ratliff recounts the program's history, describes the current success, and explores possible applications in the area of Artificial Intelligence : [англ.] : журн. // PC Magazine. — 1984. — Т. 3,  2 (7 February). — С. 131−135.
  • Dbase II. История компьютера. Дата обращения: 20 сентября 2018.
  • Encyclopedia of Microcomputers : [англ.]. N. Y. : Marcel Dekker, Inc., 1990. — Т. 4 : Computer-Related Applications: Computational Linguistics to dBase / Exsecutive editors Allen Kent, James G. Williams. — С. 398. — ISBN 9780824727031. — ISBN 0-8247-2703-7 (т. 4).
  • Erik Bachmann. Xbase ( & dBASE ) File Format Description (англ.). Clickety Click Software (27 февраля 2010). Дата обращения: 20 сентября 2018. — Описание формата файлов Xbase (dBase)
  • Data File Header Structure for the dBASE Version 7 Table File (англ.). dBase.com. dBase LLC. Дата обращения: 26 сентября 2018.
  • dBASE Table File Format (DBF) (англ.). Library of Congress (8 октября 2012). Дата обращения: 26 сентября 2018.
  • dBASE for Windows Language Reference manual. DBase File Structure (англ.) (недоступная ссылка). Scientific Computing. Архивировано 23 марта 2015 года.
  • DBF File structure (англ.). DBF Viewer 2000. HiBase Group (19 апреля 2018). Дата обращения: 26 сентября 2018.
  • dBASE CLASSIC (англ.). dBase Classic. dBase, LLC. Дата обращения: 26 сентября 2018.
  • Edward M. Esber, Jr. Ashton-Tate Press releases (англ.). Дата обращения: 26 сентября 2018.
  • Программа САУРОН для восстановления DBF файлов
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.