WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

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

См. также

Примечания

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии