Скачиваний:
180
Добавлен:
02.05.2014
Размер:
2.66 Mб
Скачать

3.6. Каталог

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

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

Замечание. Как упоминалось в главе 2, каталог должен описывать самого себя, т.е. он должен включать записи, описывающие переменные-отношения самого каталога. Тем не менее на рис. 3.6 такие записи не показаны. (Подробности приводятся в упр. 3.3.)

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

( COLUMNS WHERE TABNAME = 'DEPT' ) { COLNAME }

3 Отметим, что исходя из наличия на этом рисунке столбца R0NC0UNT можно сделать сле- дующее заключение: выполнение в базе данных операций INSERT и DELETE в качестве побочного эффекта потребует обновления данных каталога. На практике столбец ROWCOUNT обычно об- новляется только по специальному запросу (например, при запуске некоторой утилиты), поэто- му значения этого столбца не всегда будут актуальными.

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

COLUMNS

TABLES

TABNAME

COLCOUNT

ROWCONT

DEPT

CO

3

EMP

4

4

TABNAME

COLNAME

DEPT

DEPT#

DEPT

DNAME

DEPT

BUDGET

EMP

EMP#

EMP

ENAME

EMP

DEPT#

EMP

SALARY

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

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

( COLUMNS WHERE COLNAME = 'EMPi' ) { TABNAME }

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

( ( TABLES JOIN COLUMNS )

WHERE COLCOUNT < 5 ) { TABNAME, COLNAME }

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]