Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Формат DBF/FPT/DBT/IDX/CDX - файлов.

ФОРМАТ DBF/FPT/DBT/IDX/CDX - ФАЙЛОВ



ФОРМАТ DBF/FPT/DBT/IDX/CDX - ФАЙЛОВ



Структура базы данных (типа .DBF).....................1
Структура файла типа memo (.FPT)......................2
Структура файла memo в системе FoxBASE+ (типа .DBT)...3
Структура индексного файла (.IDX).....................3
Пример упорядоченной структуры дерева.................6
Структура компактного индексного файла (типа .IDX)....8
Структура составного индексного файла (типа .CDX).....11
Системные возможности.................................11




(c) СофтПанорама А45

1


Структура базы данных (типа .DBF)

Файл базы данных состоит из записи заголовка и записей
с данными. В записи заголовка определяется структура базы
данных и содержится вся другая информация, относящаяся к базе
данных. В файле она начинается с нулевой позиции.
Записи с данными* следуют за заголовком (байты
располагаются последовательно) и включают в себя фактическое
содержимое полей. Длина записи (в байтах) определяется
суммированием указанных длин всех полей. Числа в данном файле
размещаются в обратном порядке.

г==========================================================¬
¦ Запись заголовка в файле с данными ¦
¦-------T--------------------------------------------------¦
¦ Байты ¦ Описание ¦
¦=======+==================================================¦
¦ 00 ¦Типы файлов с данными: ¦
¦ ¦ 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 ¦
¦-------+--------------------------------------------------¦
¦ 01-03 ¦Последнее изменение (ГГММДД) ¦
¦-------+--------------------------------------------------¦
¦ 04-07 ¦Число записей в файле ¦
¦-------+--------------------------------------------------¦
¦ 08-09 ¦Положение первой записи с данными ¦
¦-------+--------------------------------------------------¦
¦ 10-11 ¦Длина одной записи с данными (включая признак ¦
¦ ¦удаления) ¦
¦-------+--------------------------------------------------¦
¦ 12-27 ¦Зарезервированы ¦
¦-------+--------------------------------------------------¦
¦ 28 ¦1-есть структ.составной инд.файл (типа .CDX),0-нет¦
¦-------+--------------------------------------------------¦
¦ 29-31 ¦Зарезервированы ¦
¦-------+--------------------------------------------------¦
¦ 32-n ¦Подзаписи полей** ¦
¦-------+--------------------------------------------------¦
¦ n+1 ¦Признак завершения записи заголовка (0х01) ¦
L=======¦==================================================-

2

г==========================================================¬
¦ Подзаписи полей ¦
¦-------T--------------------------------------------------¦
¦ Байты ¦ Описание ¦
¦=======+==================================================¦
¦ 00-10 ¦Название поля (максимально - 10 символов, если ¦
¦ ¦меньше 10, то дополняется пустым символом (0х00)) ¦
¦-------+--------------------------------------------------¦
¦ 11 ¦Тип данных: ¦
¦ ¦ C - символьное; ¦
¦ ¦ N - числовое; ¦
¦ ¦ L - логическое; ¦
¦ ¦ M - типа memo; ¦
¦ ¦ D - дата; ¦
¦ ¦ F - с плавающей точкой; ¦
¦ ¦ P - шаблон. ¦
¦-------+--------------------------------------------------¦
¦ 12-15 ¦Расположение поля внутри записи ¦
¦-------+--------------------------------------------------¦
¦ 16 ¦Длина поля (в байтах) ¦
¦-------+--------------------------------------------------¦
¦ 18-32 ¦Зарезервированы ¦
L=======¦==================================================-

Примечания по структуре файла с данными:

* Данные в файле с данными начинаются с позиции,
указываемой в записи заголовка в байтах 08-09. Записи
с данными начинаются с байта, содержащего признак
удаления. Если в этот байт занесен пробел в коде ASCII
(0х20), то запись не удалялась; если же в первом байте
- звездочка (0х2A), то запись удалена. За признаком
удаления следуют данные из полей, названия которых
находятся в подзаписях полей.

** Количество полей определяет число подзаписей
полей. В базе данных для каждого поля существует одна
подзапись поля. *** Ограничения по количеству знаков
в записи, максимальному числу полей и т.д. смотрите в
данном приложении в таблице "Системные возможности".

Структура файла типа memo (.FPT)

Файл типа memo содержит одну запись заголовка и
произвольное число блочных структур. В записи заголовка
располагается указатель на следующий свободный блок и размер
блока в байтах. Размер устанавливается командой SET
BLOCKSIZE при создании файла. Запись заголовка начинается с
нулевой позиции файла и занимает 512 байтов.

За записью заголовка следуют блоки, в которых
содержатся заголовок блока и текст memo. В файл базы данных
включены номера блоков, которые используются для ссылки на
блоки memo. Расположение блока в файле типа memo
определяется умножением номера блока на размер блока

3

(находящийся в записи заголовка файла типа memo). Все блоки
memo начинаются с четных адресов границ блоков. Блок memo
может занимать более, чем один последовательный блок.

г==========================================================¬
¦ Запись заголовка файла типа memo ¦
¦-------T--------------------------------------------------¦
¦ Байты ¦ Описание ¦
¦=======+==================================================¦
¦ 00-03 ¦Расположение следующего свободного блока* ¦
¦-------+--------------------------------------------------¦
¦ 04-05 ¦Не используются ¦
¦-------+--------------------------------------------------¦
¦ 06-07 ¦Размер блока (число байтов в блоке) ¦
¦-------+--------------------------------------------------¦
¦ 08-511¦Не используются ¦
¦=======¦==================================================¦
¦ Заголовок блока memo и текст memo ¦
¦=======T==================================================¦
¦ 00-03 ¦Сигнатура блока* (указывает тип данных в блоке): ¦
¦ ¦ а. 0 - шаблон (поле типа шаблон); ¦
¦ ¦ б. 1 - текст (поле типа memo) ¦
¦-------+--------------------------------------------------¦
¦ 04-07 ¦Длина* memo (в байтах) ¦
¦-------+--------------------------------------------------¦
¦ 08-n ¦Текст memo (n=длина) ¦
L=======¦==================================================-

Структура файла memo в системе FoxBASE+ (типа .DBT)

Файлы memo в системе FoxBASE+ не обладают
многосторонностью файлов memo системы FoxPro. В них могут
содержаться только текстовые данные в коде ASCII.

В данный файл записи выводятся блоками, каждый размером
512 байтов. В блок, начинающийся с нулевой позиции файла,
включен номер блока, соответствующий первой свободной
позиции в файле. Этот номер блока хранится в первых двух
байтах в обратном порядке (формат Intel 8086). Для того,
чтобы найти адрес первого свободного блока, надо размер
одного блока (512 байтов) умножить на номер блока.

Блоки, которые следуют за первым блоком, содержат текст
полей memo из связанной базы данных. В поле memo в файле
базы данных содержится номер блока в файле типа memo,
который содержит настоящий текст. Все блоки memo начинаются
с адресов, границы которых кратны 512 байтам.

Структура индексного файла (.IDX)

В индексных файлах располагается одна запись заголовка
и одна или больше записей вершин. В записи заголовка
находится информация о корневой вершине, текущем размере
файла, длине ключа, особенностях индекса и сигнатура, а
также представление ключа* в коде ASCII, которое можно

4

вывести на печать, и выражения FOR. Запись заголовка
начинается с нулевой позиции файла.

Во всех других записях вершин содержится атрибут,
количество существующих ключей и указатели на вершины,
располагающиеся слева и справа (на том же уровне) от данной
вершины. Помимо этого, в них находится группа символов,
представляющая значение ключа, и либо указатель на вершину
нижнего уровня, либо подлинный номер записи в базе данных.
Размер каждой записи, которая выведена в файл, равен 512
байтам.

В приведенных ниже таблицах показан пример
упорядоченной структуры дерева.

г==========================================================¬
¦ Запись заголовка индексного файла ¦
¦-------T--------------------------------------------------¦
¦ Байты ¦ Описание ¦
¦=======+==================================================¦
¦ 00-03 ¦Указатель на корневую вершину ¦
¦-------+--------------------------------------------------¦
¦ 04-07 ¦Указатель на свободную в списке вершину (-1, если ¦
¦ ¦таковая отсутствует) ¦
¦-------+--------------------------------------------------¦
¦ 08-11 ¦Указатель на конец файла (размер файла) ¦
¦-------+--------------------------------------------------¦
¦ 12-13 ¦Длина ключа ¦
¦-------+--------------------------------------------------¦
¦ 14 ¦Особенности индекса (любое из нижеследующих ¦
¦ ¦числовых значений либо их сумма): ¦
¦ ¦ а. 1 - уникальный индекс; ¦
¦ ¦ б. 8 - индекс имеет дополнительный оператор FOR. ¦
¦-------+--------------------------------------------------¦
¦ 15 ¦Сигнатура индекса(для использования в будущем) ¦
¦-------+--------------------------------------------------¦
¦ 16-235¦Ключевое выражение (не компилируется; до 220 ¦
¦ ¦символов)*,*** ¦
¦-------+--------------------------------------------------¦
¦236-455¦Выражение FOR (не компилируется; до 220 символов, ¦
¦ ¦оканчивающееся пустым символом) ¦
¦-------+--------------------------------------------------¦
¦456-511¦Не используются ¦
L=======¦==================================================-

5

г==========================================================¬
¦ Запись вершины индекса ¦
¦-------T--------------------------------------------------¦
¦ Байты ¦ Описание ¦
¦=======+==================================================¦
¦ 00-01 ¦Атрибуты вершины (любое из нижеследующих ¦
¦ ¦числовых значений либо их сумма): ¦
¦ ¦ а. 0 - вершина индекса; ¦
¦ ¦ б. 1 - корневая вершина; ¦
¦ ¦ в. 2 - лист. ¦
¦-------+--------------------------------------------------¦
¦ 02-03 ¦Количество существующих ключей (0, 1 или больше) ¦
¦-------+--------------------------------------------------¦
¦ 04-07 ¦Указатель на вершину, расположенную ¦
¦ ¦непосредственно слева от данной вершины (на том ¦
¦ ¦же уровне; -1, если отсутствует) ¦
¦-------+--------------------------------------------------¦
¦ 08-11 ¦Указатель на вершину, расположенную ¦
¦ ¦непосредственно справа от данной вершины (на том ¦
¦ ¦же уровне; -1, если отсутствует) ¦
¦-------+--------------------------------------------------¦
¦ 12-511¦До 500 символов, включающих в себя значение ключа ¦
¦ ¦для длины ключа с четырехбайтовым ¦
¦ ¦шестнадцатиричным числом (хранящемся в обычном ¦
¦ ¦формате слева направо): ¦
¦ ¦ Если вершина является листом (атрибут = 02 или ¦
¦ ¦ 03), тогда четыре байта содержат подлинный номер ¦
¦ ¦ номер в базе данных в шестнадцатиричном формате -¦
¦ ¦ иначе 4 байта содержат внутрииндексный ¦
¦ ¦ указатель.** ¦
L=======¦==================================================-

Примечания по структуре индексного файла:

* Тип ключа не запоминается в индексе. Он должен
определяться индексным выражением.

** В вершине-листе все, что отлично от символьных
строк, числа, используемые в качестве значений ключей и
четырехбайтовые номера представляются в байтах, порядок
которых изменен на противоположный (в формате Intel
8086).

*** Если числа используются в качестве ключей, то они
подвергаются специальной обработке. Они
преобразовываются согласно нижеследующему способу таким
образом, чтобы их можно было отсортировать с помощью
такой же схемы упорядочения в коде ASCII, что и
символы:

а. Преобразовать число в формат с плавающей точкой
IEEE.

б. Изменить на противоположный порядок байтов с
порядка Intel на порядок слева направо.

6

в. Если число отрицательное, взять логическое
дополнение числа (изменить на противоположные все
64 бита, 1 на 0 и 0 на 1), иначе инвертировать
только самый левый бит.

Пример упорядоченной структуры дерева

Поиск ключа в приведенной ниже структуре потребует
просмотра единственного пути между корневой вершиной и
листом. Вершины на самом нижнем уровне являются
вершинами-листьями. Так как ключи отсортированы, то все
ключи в поддереве меньше либо равны родительской вершине.

Корневая вершина
¦
---T--+---T--¬
¦ ¦ ¦ ¦
Указатель на --- ¦-1¦ F,H ¦-1¦ --- Указатель на
левую вершину ¦ ¦ ¦ ¦ правую вершину
L--+-T--T-+---
¦ ¦
--------- L------¬
¦ ¦
v v
---T------T--¬ ---T------T--¬
¦ ¦ ¦ +--->¦ ¦ ¦ ¦
¦-1¦ C,F ¦ ¦ ¦ ¦ H ¦-1¦ --- Индексная
¦ ¦ ¦ ¦¦ ¦ ¦ +--->¦ ¦ ¦ ¦
¦-1¦A,B,C ¦ ¦ ¦ ¦D,E,F ¦ ¦ ¦ ¦ G,H ¦-1¦
¦ ¦ ¦ ¦

  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2020
    Реклама на сайте