Программирование >>  Хронологические базы данных 

1 ... 22 23 24 [ 25 ] 26 27 28 ... 348


3.6. Каталог

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

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

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

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

( COLUMNS WHERE TABNAME = DEPT ) { COLNAME }

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

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



TABLES

COLUMNS

TABNAME

COLCOUNT

ROWCONT

DEPT

TABNAME

COLNAME

DEPT

DEPT#

DEPT

DNAME

DEPT

BUDGET

EMP#

ENAME

DEPT#

SALARY

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

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

( COLUMNS WHERE COLNAME = EMPi ) { TABNAME }

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

{ TABLES JOIN COLUMNS )

WHERE COLCOUNT < 5

{ TABNAME, COLNAME }

3.7. Базовые переменные-отношения и представления

Мы уже видели, что на основе реляционных значений, присвоенных некоторому множеству переменных-отношений, подобных DEPT и ЕМР, реляционные выражения позволяют получить множество других реляционных значений, например в результате соединения двух переменных-отношений. Пришло время ввести еще несколько новых терминов. Исходные (заданные) переменные-отношения называются базовыми переменными-отношениями, а присвоенные им значения называются базовыми отношениями. Отношение, которое получено или может быть получено из базового отношения в результате выполнения каких-либо реляционных выражений, называется производным отношением.

, Замечание. В [3.3] базовые переменные-отношения называются реальными переменными-отношениями.

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

CREATE TABLE ЕМР ... :



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

CREATE VIEW ТОРЕМР AS

( ЕМР WHERE SALARY > ЗЗК ) { EMPt, ENAME, SALARY } ;

Замечание. Поскольку в данный момент это несущественно, в примере используется смешанная нотация языков SQL и Tutorial D.

Когда этот оператор выполняется, выражение, следующее за ключевым словом AS и фактически определяющее представление, не вычисляется, а просто запоминается системой (обычно посредством сохранения в каталоге под указанным именем ТОРЕМР). Однако, с точки зрения пользователя, все выглядит так, как будто в базе данных появилась вполне реальная переменная-отношение с именем ТОРЕМР, имеющая текущее значение, которое показано на рис. 3.7 только в незатененных участках. И пользователь должен иметь возможность оперировать этим представлением точно так, как если бы оно являлось обычной базовой переменной-отношением.

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

ТОРЕМР

ЕМР#

ENAME

DEPT#

SALARY

Lopez

Cheng

Finzi

Saito

Puc. 3.7. Виртуальная переменная-отношение ТОРЕМР (затененные участки) как представление базовой переменной-отношения ЕМР

Однако будьте внимательны: отмечая, что значение переменной-отношения ТОРЕМР является отношением, которое было бы результатом, если бы определяющее данное представление выражение было на самом деле вычислено, мы вовсе не хотим сказать, что существует отдельная копия этих данных. Иначе говоря, мы вовсе.не имеем в виду, что определяющее представление выражение на самом деле вычисляется. Наоборот, представление - это, по сути, просто окно, через которое можно видеть часть значения базовой переменной-отношения ЕМР. Отсюда следует, что любые изменения в базовой переменной-отношении будут автоматически и немедленно



1 ... 22 23 24 [ 25 ] 26 27 28 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика