Системная БД

Системная БД представляет собой набор из трех таблиц, содержащих метаинформацию, т.е. данные о данных:

  1. $$$SYSRL (файлы с именами 1.*) – таблица таблиц. Содержит информацию о таблицах: имя, идентификатор владельца, число столбцов, размеры файлов и пр. Это каталог таблиц БД, выполненный также в виде таблицы;

  2. $$$ATTRI (файлы с именами 2.*) – таблица столбцов. Содержит информацию о столбцах таблиц: имя, принадлежность к таблице, тип данных, информация об индексах, ограничения целостности и пр.;

  3. $$$USR (файлы с именами 3.*) – таблица полномочий. Содержит информацию о пользователях и их полномочиях при работе с таблицами, ролях и пр.

Кроме описаний пользовательских таблиц, системные таблицы содержат и свои собственные описания.

После генерации системной БД с помощью утилиты gendb она будет содержать следующие таблицы:

  • $$$SYSRL – описания трех системных таблиц: $$$SYSRL, $$$ATTRI, $$$USR;

  • $$$ATTRI – описания 13 столбцов системных таблиц;

  • $$$USR – описание единственного пользователя БД, имеющего полномочия на чтение при работе со всеми системными таблицами (администратора БД).

При создании новых таблиц и пользовательских представлений или при изменении полномочий состояние системной БД меняется.

Создание пользовательской таблицы/представления влечет за собой добавление ее описания в $$$SYSRL и описаний ее столбцов в $$$ATTRI. При удалении таблицы СУБД выполняет обратные действия.

Доступ к любой таблице (пользовательской/системной) БД определяется по информации из системных таблиц.

Системные таблицы содержат жизненно важную для работы БД информацию.

Изменение данной информации может привести к катастрофическим последствиям. Во избежание изменения пользователями системных таблиц доступ к ним запрещен для всех пользователей (даже администратор БД имеет лишь привилегию SELECT). Все необходимые изменения в системных таблицах в процессе работы производит только ядро СУБД ЛИНТЕР.