Системный каталог - это набор таблиц, в которых содержится информация, необходимая для правильного функционирования СУБД: о поддерживаемых базах данных и их базовых таблицах, представлениях, курсорах, индексах, пользователях и их правах доступа к информации, правилах модификации данных и т.д. В разных СУБД, поддерживающих 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. Обновление проводится только при создании, модификации или уничтожении таблиц, индексов, правил и т.п. с помощью предложений, рассматриваемых ниже.
Так, в каждой строке системной таблицы 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. Обновление проводится только при создании, модификации или уничтожении таблиц, индексов, правил и т.п. с помощью предложений, рассматриваемых ниже.