Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы и банки данных / Базы и банки данных (5 сем).doc
Скачиваний:
76
Добавлен:
01.05.2014
Размер:
705.54 Кб
Скачать

Каталог

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

Важно, что в реляционных системах каталог сам состоит из таблиц (точнее, системных таблиц). В результате пользователь может обращаться к каталогу так же, как к своим данным.

Базовые таблицы, представления, снимки и запросы

Исходные таблицы называют базовыми, а таблицы, полученные из них путем выполнения какихлибо реляционных выражений, называютпроизводнымитаблицами. То есть производная таблицаэто такая таблица, которая определяется в терминах других таблиц и, в конечном счете, в терминах базовых таблиц, а базовая таблицаэто такая таблица, которая не является производной.

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

Например, инструкцию

CREATEVIEWСПЕЦИАЛИСТЫAS(СОТРУДНИКИWHEREСОТР_ЗАРП > 10000) [СОТР_НОМЕР, СОТР_ИМЯ, СОТР_ЗАРП];

можно использовать для определения представления СПЕЦИАЛИСТЫ. Когда эта инструкция выполняется, выражение, следующее за ключевым словом ASи фактически определяющее представление не вычисляется, а просто «запоминается» системой (обычно путем сохранения в каталоге под указанным именем СПЕЦИАЛИСТЫ). Однако для пользователя это теперь такая же реальная таблица. Иными словами, СПЕЦИАЛИСТЫ обозначает виртуальную таблицу, т.е. таблицу, которая была бы результатом, если бы выражение, определяющее представление было бы на самом деле вычислено.

Здесь важно отметить, что СПЕЦИАЛИСТЫ не ссылается а отдельную копию данных, т.е. на самом деле представление не вычисляется. Наоборот, представление это просто «окно» в основной таблице СОТРУДНИКИ. Более того, любые изменения в основной таблице будут автоматически и немедленно видны через такое «окно», и наоборот.

В MSAccessпредставлению соответствует запрос, сохраняемый в базе данных.

Снимки (snapshot) это именованные производные отношения, такие же как представления. Однако в отличие от представлений снимки реальны, а не виртуальны, т.е. представлены не только с помощью определения в терминах других именованных отношений, но и также своими отдельными данными. Создание снимка похоже на выполнение запроса, за исключением того, что результат такого запроса сохраняется в базе данных под определенным именем как отношение, доступное только для чтения, и периодически (например, каждый день) снимок «обновляется», т.е. его текущее значение сбрасывается, запрос выполняется снова и его результат становится новым значением снимка.

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

Наконец, промежуточным результатомназывается неименованное производное отношение, являющееся результатом некоторого реляционного выражения, вложенного в другое, большее выражение.