Глава 5. О предложениях определения данных и оптимизации запросов
5.1. Системный каталог

Системный каталог - это набор таблиц, в которых содержится информация, необходимая для правильного функционирования СУБД: о поддерживаемых базах данных и их базовых таблицах, представлениях, курсорах, индексах, пользователях и их правах доступа к информации, правилах модификации данных и т.д. В разных СУБД, поддерживающих SQL, существует от десятка до нескольких десятков системных таблиц, структура которых ничем не отличается от уже знакомой нам структуры пользовательских таблиц.

Так, в каждой строке системной таблицы SYSTABLES хранится описание одной из таблиц пользовательских или системной баз данных. Для каждой из них указывается имя таблицы, имя пользователя, который создал эту таблицу, число столбцов в ней и ряд других элементов информации. В таблице SYSCOLUMNS содержится строка для каждого столбца каждой таблицы, в которой указано имя столбца, имя таблицы, частью которой является данный столбец, тип данных для этого столбца и много другой информации о столбце.

С помощью предложения SELECT пользователь может получить информацию из любой системной таблицы. Например, он может дать запрос на получение имен таблиц, числа их столбцов и строк, владельца и краткого описания (если таковое вводилось в базу данных):

    SELRCT	Tab_name,N_col,N_row,Tab_owner,Comments
    FROM	SYSTABLES;

и получить результат, показанный на рис. 5.1,а.

Для получения же некоторых данных о столбцах таблицы Блюда можно дать запрос

    SELECT	Col_name, Type, Length, Comments
    FROM	SYSCOLUMNS
    WHERE	Tab_name = 'Блюда';

и получить результат, показанный на рис. 5.1,б.

а)

Tab_name | N_col | N_row | Tab_owner | Comments
--- | --- | --- | --- | ---
...
SYS_TABLES | 11 | SYSTEM
SYS_COLUMNS | 14 | SYSTEM
...
Блюда | 6 | 33 | KIRILLOW | Перечень блюд, известных шеф-повару
Поставки | 4 | 37 | GROMOW | Данные о поставляемых продуктах
Вид_блюд | 2 | 5 | KIRILLOW | Перечень видов блюд
Трапезы | 2 | 3 | GROMOW | Перечень трапез в пансионате
Состав | 3 | 148 | KIRILLOW | Состав блюд
Продукты | 11 | 17 | KIRILLOW | Таблица продуктов
...

б)

Col_name | Type | Length | Comments
--- | --- | --- | ---
БЛ | INTEGER | 4 | Код блюда
Блюдо | TEXT | 16 | Название блюда
В | TEXT | 1 | Код вида блюда (З, С, ...)
Основа | TEXT | 6 | Основной продукт в блюде
Выход | REAL | 4 | Масса порции готового блюда
Труд | INTEGER | 4 | Стоимость приготовления блюда (коп)

Рис. 5.1. Результаты запросов по системным таблицам

Пользователь, не знакомый со структурой базы данных, может с помощью подобного рода запросов получить информацию о такой структуре. Для этого ему надо владеть языком SQL и немного подумать.

В заключение следует отметить, что СУБД не позволяет обновлять каталог с помощью предложений DELETE, INSERT и UPDATE. Обновление проводится только при создании, модификации или уничтожении таблиц, индексов, правил и т.п. с помощью предложений, рассматриваемых ниже.

4.5 | Содержание | 5.2