Главная » SQL, Базы данных » КАТАЛОГ СУБД

0

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

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

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

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

Примечание. Как упоминалось в главе 2, каталог должен также описывать сам себя, т.е.

включать записи, описывающие переменные отношения самого каталога (см. упр. 3.3).

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

предполагается, что по каким-то причинам пользователь не имеет этой  информации).

Тогда необходимое выражение будет выглядеть следующим образом.

( COLUMNS WHERE TABNAME = ‘DEPT’ ) { COLNAME }

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

( COLUMNS WHERE COLNAME = ‘ЕМР#’ ) { TABNAME }

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

( ( TABLES JOIN COLUMNS )

WHERE COLCOUNT < 5 ) { TABNAME, COLNAME }

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии