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

4.3. Каталог

В языке SQL существует аналог того, что принято называть каталогом, — инфор- мационная схема. Знакомые нам термины "каталог" и "схема" действительно исполь- зуются в языке SQL, но с особым, специфическим только для языка SQL смыслом. Не- строго говоря, каталог в языке SQL состоит из дескрипторов (метаданных) для от- дельной базы данных3, а схема состоит из дескрипторов той части базы данных, кото- рая принадлежит отдельному пользователю. Другими словами, в системе может быть любое число каталогов (по одному для каждой базы данных), каждый из которых де- лится на произвольное число схем. Однако каждый каталог должен содержать ровно одну схему с именем INFORMATION SCHEMA (информационная схема), которая, с точки зрения пользователя, и является схемой (как уже указывалось), выполняющей функции обычного каталога.

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

3 В интересах точности необходимо отметить, что в стандарте языка SQL такое понятие, как "база данных", в действительности просто отсутствует! По определению каталогом опи- сывается то, что называется набором данных и зависит от реализации Однако нет никаких ра- зумных аргументов, запрещающих подразумевать под этим понятием базу данных.


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

  2. На самом деле нужно говорить "одна из информационных схем", а не просто "информационная схема", поскольку, как мы убедились, в каждом каталоге имеет- ся такая схема. Поэтому в общем случае все данные, которые доступны некоторому пользователю, не будут описаны с помощью единственной информационной схе- мы. Однако, чтобы упростить изложение материала, мы будем продолжать считать, что в действительности существует только одна схема.

Нет причин вдаваться здесь в детали содержимого информационной схемы. Просто приведем некоторые из наиболее важных представлений информационной схемы в на- дежде на то, что сами названия позволят читателю получить некоторое понятие о содер- жимом этих представлений. Следует также отметить, что представление TABLES содер- жит информацию обо всех именованных таблицах, как базовых таблицах, так и пред- ставлениях, в то время как представление VIEWS содержит информацию только о пред- ставлениях. В [4.19] этот вопрос рассмотрен более подробно, в частности в этой работе рассказывается, как формулировать запросы для получения данных из информационной схемы (что не так просто, как можно было бы ожидать).

SCHEMATA

REFERENTIAL_CONSTRAINTS

(схемы)

(ссылочные ограничения)

DOMAINS

CHECK_CONSTRAINTS

(домены)

(проверочные ограничения)

TABLES

KEY_COLUMN_USAGE

(таблицы)

(использование столбца ключа)

VIEWS

ASSERTIONS

(представления)

(утверждения)

COLUMNS

VIEW_TABLE_USAGE

(столбцы)

(использование таблицы представления)

TABLE_PRIVILEGES

VIEW_COLUMN_USAGE

(привилегии для таблиц)

(использование столбца представления)

COLUMN_PRIVILEGES

CONSTRAINT_TABLE_USAGE

(привилегии для столбцов)

(использование таблицы ограничений)

USAGE PRIVILEGES

CONSTRAINT_COLUMN_USAGE

(применяемые привилегии)

(использование столбца ограничения)

DOMAIN_CONSTRAINTS

CONSTRAINT_DOMAIN_USAGE

(ограничения для домена)

(использование домена ограничения)

TABLE_CONSTRAINTS

(ограничения для таблицы)

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