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