Мир 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.




    Содержание  Назад  Вперед