InterBase: тормозология и глюконавтика
Страница 32. Системные таблицы. Часть 4


  RDB$RELATIONS - параметры отношений (как таблиц, так и вьюшек)
RDB$VIEW_SOURCE - исходник select'а вьюшки в виде текстового блоба или null для хранимых таблиц.
RDB$VIEW_BLR - вариант предыдущей информации, откомпилированный во внутреннее представление interbase.
RDB$DESCRIPTION - описание отношения (обычно null).
RDB$RELATION_ID -
RDB$SYSTEM_FLAG - 1 для системных таблиц
RDB$DBKEY_LENGTH - длинна внутреннего ключа для физической ссылки на запись в БД. Согласно документации для таблиц должно быть 8, а для вьюшек - 8 * количество таблиц в конструкции from.
RDB$FIELD_ID - количество полей. Обозвали странновато.
RDB$RELATION_NAME - имя отношения .
RDB$SECURITY_CLASS - класс безопасности согласно RDB$SECURITY_CLASSES.
RDB$EXTERNAL_FILE - имя внешнего файла для внешней таблицы или null для обычной.
RDB$RUNTIME - какая-то информация в двоичном виде, которую использует interbase.
RDB$EXTERNAL_DESCRIPTION - описание ко внешнему файлу. Опять же, как обычно, null.
RDB$OWNER_NAME - имя пользователя-владельца , создавшего таблицу.
RDB$FORMAT - количество версий структуры таблицы (1 при создании и на 1 больше после каждого alter table)
RDB$DEFAULT_CLASS - класс безопасности по умолчанию для вновь добавляемых к таблице полей. То есть тоже ссылка на RDB$SECURITY_CLASSES.
RDB$FLAGS - какое-то совсем странное поле, упомянутое, но не описанное в документации.
RDB$RELATION_CONSTRAINTS - общие параметры ограничений
RDB$CONSTRAINT_NAME - имя ограничения
RDB$CONSTRAINT_TYPE - тип ограничений ('FOREIGN KEY', 'PRIMARY KEY', 'NOT NULL', 'UNIQUE', 'CHECK', 'NOT NULL') . Странность состоит в том, что в пятёрке здесь упоминаются и ограничения not null, хотя не указывается, какое именно поле. Как связать это дело с RDB$RELATION_FIELDS, непонятно.
RDB$RELATION_NAME - имя таблицы, на которую наложено ограничение, то есть ссылка на RDB$RELATIONS.
RDB$DEFERRABLE - признак того, что проверку можно откладывать на конец транзакции. В настоящий момент эта возможность в interbase не поддерживается и по-этому всегда должно быть 'NO'.
RDB$INITIALLY_DEFERRED - признак того, что проверка изначально в отложеном режме. По той же самой причине всегда 'NO'.
RDB$INDEX_NAME - имя индекса для ключевых ограничений.
RDB$RELATION_FIELDS - поля отношений (таблиц и вьюшек)
RDB$FIELD_NAME - имя поля
RDB$RELATION_NAME - имя отношения
RDB$FIELD_SOURCE - ссылка на запись RDB$FIELDS с дальнейшей детализацией по этому полю.
RDB$QUERY_NAME - альтернативное имя (?) для поля, которое якобы можно использовать в ISQL.
RDB$BASE_FIELD - имя хранимого поля, из которого извлекается данное (для полей вьюшек)
RDB$EDIT_STRING - согласно документации - не используется.
RDB$QUERY_HEADER - согласно документации - не используется.
RDB$UPDATE_FLAG - согласно документации - не используется.
RDB$FIELD_ID - номер поля, под которым оно должно фигурировать в кусках кода BLR. Меняется при перебэкапе. Вообще в это дело лучше не лезть. Хотя интересно было бы найти описание структуры BLR.
RDB$VIEW_CONTEXT - номер базовой таблицы вьюшки, из которой берётся данное поле. (см. RDB$VIEW_RELATIONS ниже) .
RDB$DESCRIPTION - описание, как обычно, null.
RDB$DEFAULT_VALUE - значение default в формате BLR (результат компиляции выражения из следующего поля).
RDB$DEFAULT_SOURCE - текст выражения default
RDB$SYSTEM_FLAG - признак системности (1 = да, 0 или null = нет).
RDB$SECURITY_CLASS - класс безопасности для контроля прав над данным полем.
RDB$NULL_FLAG - 1 для полей not null
RDB$FIELD_POSITION - номер поля в списке полей отношения (начиная с 0)
RDB$COMPLEX_NAME - зарезервировано для будущего использования.
RDB$COLLATION_ID - ссылка на сравнение (RDB$COLLATIONS) для полей, содержащих текстовую информацию.
RDB$ROLES - роли. Таблица, как и вся поддержка этого механизма, существует только начиная с пятёрки и ODS 9.

RDB$ROLE_NAME - имя самой роли.
RDB$OWNER_NAME - имя пользователя-владельца роли.
RDB$SECURITY_CLASSES - классы безопасности. На эту таблицу идут ссылки их таблиц, полей, процедур и других объектов, где может понадобиться как-то ограничивать права доступа.

RDB$SECURITY_CLASS - имя класса. Обычно генерируется автоматически в формате RDB$ЧЕГО_НИБУДЬ.
RDB$ACL - собственно права доступа в виде блоба. Точный формат неизвестен, но ISQL обычно показывает в довольно удобочитаемом виде.
RDB$DESCRIPTION - описание, как обычно, null.
RDB$TRANSACTIONS - распределённые транзакции. Местные транзакции отрабатываются целиком в дебрях базы и в этой таблице не показываются.

RDB$TRANSACTION_ID - номер транзакции.
RDB$TRANSACTION_STATE - состояние. 0 = limbo (формируется), 1 = committed (зафиксирована), 2 = roolled back (отменена).
RDB$TIMESTAMP - согласно документации - зарезервировано на будущее.
RDB$TRANSACTION_DESCRIPTION - описание транзакции на случай если связь прервётся и придётся разбираться, откуда она взялась.
 
« Предыдущая статья