InterBase: тормозология и глюконавтика Страница 32. Системные таблицы. Часть 4
|
Страница 32 из 38 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 - описание транзакции на случай если связь прервётся и придётся разбираться, откуда она взялась.
|