Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Реляционная_алгебра.doc
Скачиваний:
2
Добавлен:
22.11.2019
Размер:
2.61 Mб
Скачать

6.7. Зачем нужна алгебра

Итак, в предыдущих разделах описана реляционная алгебра, т.е. набор операторов для отношений. Речь идет о следующих операторах: выборка, проекция, произведение, объединение, пересечение, вычитание, соединение (естественное и θ-соединение) и деление плюс оператор переименования атрибутов RENAМE. (За исключением RENAМE, эти операторы составляют набор, впервые определенный Коддом в [6.2].) Также представлен возможный синтаксис для этих операций, который использовался во многих приведенных здесь примерах.

Как отмечалось выше в этой главе, восемь операторов Кодда не представляют минимального набора операторов (они задумывались не с этой целью), так как не все из них примитивны, их можно определить в терминах других операторов. Например, естественное соединение - это проекция выборки произведения. Фактически три операции из этого набора, а именно соединение, пересечение и деление, можно определить через остальные пять (к этому мы еще вернемся в конце главы). Эти пять операций (выборка, проекция, произведение, объединение и вычитание) можно рассматривать как примитивные в том смысле, что ни одна из них не выражается через другие. Поэтому минимальный набор будет состоять из этих пяти примитивных операций. Однако на практике другие три операции (в особенности соединение) на

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

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

  • Определение области выборки, т.е. определение данных для их выбора, как результата операции выборки.

  • Определение области обновления, т.е. определение данных для их вставки, изменения или удаления, как результата операции обновления.

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

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

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

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

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

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

( ( SP JOIN S ) WНERE P# = 'Р2' ) [ SNAМE ]

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

( ( SP WНERE Р# = 'Р2' ) JOIN S ) [ SNAМE ]

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

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

В заключение отметим, что благодаря своей фундаментальной природе алгебра часто используется в качестве критерия возможностей выражения пользовательских намерений для некоторого определенного реляционного языка (например, такого SQL). В общем, язык называют реляционно полным [6.2], если его возможности, по крайней мере, соответствуют возможностям, обеспечиваемым алгебраическими операциями, т.е. если выражения этого языка позволяют определить каждое отношение, которое может быть определено с помощью алгебраических выражений. Понятие реляционной полноты подробнее обсуждается в следующей главе.