Системная БД
Системная БД представляет собой набор из трех таблиц, содержащих метаинформацию, т.е. данные о данных:
-
$$$SYSRL
(файлы с именами 1.*) – таблица таблиц. Содержит информацию о таблицах: имя, идентификатор владельца, число столбцов, размеры файлов и пр. Это каталог таблиц БД, выполненный также в виде таблицы; -
$$$ATTRI
(файлы с именами 2.*) – таблица столбцов. Содержит информацию о столбцах таблиц: имя, принадлежность к таблице, тип данных, информация об индексах, ограничения целостности и пр.; -
$$$USR
(файлы с именами 3.*) – таблица полномочий. Содержит информацию о пользователях и их полномочиях при работе с таблицами, ролях и пр.
Кроме описаний пользовательских таблиц, системные таблицы содержат и свои собственные описания.
После генерации системной БД с помощью утилиты gendb
она будет содержать следующие таблицы:
-
$$$SYSRL
– описания трех системных таблиц:$$$SYSRL
,$$$ATTRI
,$$$USR
; -
$$$ATTRI
– описания 13 столбцов системных таблиц; -
$$$USR
– описание единственного пользователя БД, имеющего полномочия на чтение при работе со всеми системными таблицами (администратора БД).
При создании новых таблиц и пользовательских представлений или при изменении полномочий состояние системной БД меняется.
Создание пользовательской таблицы/представления влечет за собой добавление ее описания в $$$SYSRL
и описаний ее столбцов в $$$ATTRI
. При удалении таблицы СУБД выполняет обратные действия.
Доступ к любой таблице (пользовательской/системной) БД определяется по информации из системных таблиц.
Системные таблицы содержат жизненно важную для работы БД информацию.
Изменение данной информации может привести к катастрофическим последствиям. Во избежание изменения пользователями системных таблиц доступ к ним запрещен для всех пользователей (даже администратор БД имеет лишь привилегию SELECT
). Все необходимые изменения в системных таблицах в процессе работы производит только ядро СУБД ЛИНТЕР.