Мир InterBase


Логическая структура базы данных InterBase - часть 3


Дело в том. что логическая структура базы данных состоит не только из таблиц, но и из других объектов. В InterBase существуют следующие объекты:

  • Table (таблица);
  • View (представление);
  • Trigger (триггер);
  • Computed_field (вычисляемое поле);
  • Validation (проверка);
  • Procedure (процедура);
  • Epression_index (вычисляемый индекс);
  • Exception (исключение);
  • User (польюватель),
  • Field (поле);
  • Index (индекс);
  • Usei-Defined Function (UDF) - функция, определяемая пользователем.

Пока, может быть, не совсем очевидно назначение некоторых из этих объектов, но ясно, что их необходимо описывать и хранить в некотором виде, удобном как для пользователя, так и для доступа из ядра InterBase. Лучше всего это сделать, сохранив все эти объекты в системных таблицах. Их добавление и модификация производятся с помощью SQL-запросов. Не правда ли, элегантное решение9

Реализация сервера полностью отделена от конкретной базы данных — все взаимосвязи описываются SQL и его расширениями - языком хранимых процедур и триггеров.

Итак, все объекты сервера хранятся в таблицах. Для каждого вида объектов существует таблица, описывающая все экземпляры, описанные в базе данных. Например, для триггеров есть таблица RDB$Triggers, для процедур - RDBSProcedures, а представления описываются в таблице RDBSRelations.

Рассмотрим подробнее структуру последней таблицы, описывающей все таблицы и представления в базе данных. Структура таблицы RDBSRELATIONS вта из Language Reference for InterBase 6 и приведена в Табл 4 25

Табл 4.25. Системная таблица RDB$Relations

Колонка

Тип данных

Длина

Описание

RDB$VIEW_BLR

BLOB

80

BLR: Для представлений (view), содержит BLR (Binary Language Representation) запроса, который InterBase осуществляет каждый раз, когда идет обращение к представлению

RDB$VIEW SO URGE

BLOB

80

Текст: Для представлений содержит код SQL-запроса, который реализует это представление

RDB$ DESCRIP TION

и

80

Пользовательское описание таблицы или представления

RDBSRELATIO NJD

SMALLINT

 

Содержит внутренний идентификатор таблицы/представления

RDB$SYSTEM FLAG

II

 

Определяет тип содержимого таблицы: Пользовательские данные - 0; Системная информация > 0

RDB$DBKEY LE NGTH

N

 

Длина db$key

RDB$FORMAT

II

 

Зарезервировано для внутреннего использования InterBase Содержит счетчик изменений метаданных для данной таблицы

RDB$FIELD_ID

u

 

Число полей в таблице

RDB$RELATIO N_NAME

CHAR

31

Уникальное имя таблицы

В описании этой системной таблицы встречается аббревиатура BLR Чтобы понять, что это такое, придется сделать небольшой экскурс в SQL. Как известно, представления, триггеры и хранимые процедуры - это код, написанный на расширении языка SQL (для каждого сервера СУБД существуют свои расширения. Он приближен к человеческому языку, что позволяет легко составлять на нем запросы Но InterBase, очевидно, преобразовывает его во что-то более "машинное", а именно в BLR (Binary Language Representation), "твоичное" представление языка (SQL, очевидно). Любой запрос, триггер, представление, хранимая процедура обязательно транслируются в BLR, а уж затем передаются для исполнения ядру InterBase.




Начало  Назад  Вперед