Скачиваний:
54
Добавлен:
01.04.2014
Размер:
657.92 Кб
Скачать

3.6. Каталог

Как отмечалось в главе 2, каждая СУБД должна обеспечивать функцию каталога, или словаря. Каталог, между прочим, размещается там, где сохраняются различные схемы (внешние, концептуальные, внутренние) и все, что относится к отображениям (внешнее - концептуальное, концептуальное - внутреннее). Иначе говоря, каталог со­держит детальную информацию (иногда называемую дескрипторами), касающуюся различных объектов, которые имеют значение для самой системы. Примерами таких объектов могут служить таблицы, индексы, правила целостности, правила безопасно­сти и т.д. Информация дескриптора необходима для обеспечения правильной работы системы. Например, оптимизатор использует информацию каталога об индексах, а также другую информацию, чтобы определиться, каким образом выполнить запрос пользователя. Подобно этому, подсистема безопасности использует информацию ка­талога о пользователях и правилах безопасности, чтобы разрешить (или отказать) за­просу первоочередное выполнение.

Прекрасным свойством реляционных систем в настоящее время является то, что каталог сам состоит из таблиц (точнее, системных таблиц, названных так для от­личия от обычных пользовательских). В результате пользователь может обращаться к каталогу так же, как к своим данным. Например, в каталоге обычно содержатся сис­темные таблицы TABLES и COLUMNS, назначение которых — описание известных системе таблиц и столбцов этих таблиц. (Мы говорим "обычно", потому что каталоги в различных системах разные, так как большая доля информации каталога является особенной для системы.) Для базы данных отделов и служащих таблицы TABLES и COLUMNS могут схематически выглядеть так, как показано на рис. 3.4.

Замечание. Точнее говоря, таблицы TABLES и COLUMNS описывают известные системе именованные таблицы, в противоположность неименованным таблицам, кото­рые являются результатом какого-либо реляционного выражения. Обратите также вни­мание на то, что категория "именованные таблицы" включает таблицы каталога, т.е. ка­талог описывает сам себя. Однако на рис. 3.4 сам каталог не показан в таблицах.

TABLES

TABNAME

COLCOUNT

ROWCONT

.....

DEPT

3

3

... .

EMP

4

4

.....

COLUMNS

TABNAME

COLNAME

.....

DEPT

DEPT#

.....

DEPT

DNAME

.....

DEPT

BUDGET

.....

EMP

EMP#

.....

EMP

ENAME

.....

EMP

DEPT#

.....

EMP

SALARY

.....

Рис. 3.4. Каталог базы данных отделов и служащих (изображен схематически)

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

( COLUMNS WHERE TABNAME = 'DEPT' ) [ COLNAME ]

Замечание. Если бы нам понадобилось сохранить результат в более постоянном виде, мы могли бы присвоить его другой таблице, скажем, таблице RESULT, как бы­ло показано в примере выше, но мы будем опускать этот шаг присвоения в большин­стве наших примеров (как в этой, так и в последующих главах).

Вот еще один пример. Необходимо узнать, в каких таблицах есть столбец ЕМР#:

( COLUMNS WHERE COLNAME = 'ЕМР#' ) [ TABNAME ]

Упражнение для самопроверки. Каким будет результат выполнения следующего выражения:

( ( TABLES JOIN COLUMNS )

WHERE COLCOUNT < 5 ) [ TABNAME, COLNAME ]

Соседние файлы в папке Дейтл Введ в БД