|
Программирование >> Хронологические базы данных
тов RENAME. (За исключением RENAME, эти операторы составляют набор, впервые определенный Коддом в [6.1].) Для этих операций также был представлен конкретный синтаксис, который и использовался в нескольких приведенных выше примерах. Как уже отмечалось, восемь операторов Кодда не представляют минимального набора операторов (они задумывались не с этой целью), так как не все из них примитивны и часть из них можно определить в терминах других операторов. В действительности три операции из этого набора, а именно - соединение, пересечение и деление, можно определить через остальные пять (упр. 6.2). Пять данных операций (выборка, проекция, произведение, объединение и вычитание) * можно рассматривать как примитивные в том смысле, что ни одна из них не выражается через другие. Поэтому минимальный набор (безусловно, необязательно единственно возможный) будет состоять из этих пяти примитивных операций. Однако на практике остальные три операции (в особенности операция соединения) используются настолько часто, что имеет смысл обеспечить их непосредственную поддержку, несмотря на то что они не являются примитивными. Теперь пришло время объяснить один важный момент. До сих пор предполагалось (хотя явно и не указывалось), что главное назначение алгебры - только выборка данных. Однако это не так. Основная цель алгебры - обеспечить запись реляционных выражений. Такие выражения, в свою очередь, хотя и предполагают различное применение, включая, конечно, и выборку информации, не ограничены лишь этой одной функцией. Ниже перечислены некоторые из возможных применений подобных выражений. Определение области выборки, т.е. тех данных, которые должны быть доставлены в результате выполнения операции выборки (что детально рассматривалось выше). Определение области обновления, т.е. данных, которые должны быть вставлены, изменены или удалены в результате выполнения операции обновления (глава 5). Определение правил поддержки целостности данных, т.е. некоторых особых требований, которым должна удовлетворять база данных (глава 8). Определение производных переменных-отношений, т.е. тех данных, которые должны быть включены в представления или моментальные снимки состояния базы данных (глава 9). Определение требований устойчивости, т.е. данных, которые должны быть включены в контролируемую область для некоторых операций управления параллельным доступом к информации (глава 15). Определение ограничений защиты, т.е. данных, для которых осуществляется тот или иной тип контроля доступа (глава 16). В целом, выражения реляционной алгебры служат для символического высокоуровневого представления намерений пользователя (например, в отношении некоторого определенного запроса). И именно потому, что подобные выражения являются символическими и высокоуровневыми, ими можно манипулировать в соответствии с различными Поскольку произведение является специальным видом соединения, в этом перечне примитивных операторов его можно заменить соединением. Более того, в перечень необходимо также добавить оператор RENAME, поскольку наша алгебра (в отличие от алгебры, определенной в [6.1 ]) опирается на имена атрибутов, а не на их порядковые номера. символическими высокоуровневыми правилами преобразования. Например, рассмотрим следующее выражение ( Получить имена поставщиков детали с номером Р2 ; пример 6.5.1). ( ( SP JOIN S ) WHERE Р# = Р# ( Р2 ) ) { SNAME } Его можно преобразовать в логически эквивалентное, но, вероятно, более рациональное выражение следующего вида. ( ( SP WHERE Pt = Р# ( Р2 ) ) JOIN S ) { SNAME } (Упражнение. В каком смысле последнее выражение можно считать более рациональным? Почему только вероятно ?) Таким образом, реляционная апгебра может служить хорошим основанием для выполнения оптимизации (чтобы вспомнить, что такое оптимизация, обратитесь к разделу 3.5 главы 3). Следовательно, если пользователь выразил свой запрос с помощью первого из двух приведенных выше выражений, то перед выполнением оптимизатор должен преобразовать его во второе выражение (в идеальном случае производительность не должна зависеть от формы, в которой пользователь выражает свой запрос). К этой теме мы еще вернемся в главе 17. В заключение отметим, что благодаря своей фундаментальной природе реляционная алгебра часто используется в качестве критерия возможностей выражения пользовательских намерений для некоторого определенного реляционного языка (например, такого, как язык SQL). В общем случае язык называют реляционно полным [6.1], если его возможности, по крайней мере, соответствуют возможностям, обеспечиваемым алгебраическими операциями; иначе говоря, если выражения этого языка позволяют определить каждое отношение, которое может быть определено с помощью алгебраических выражений (первоначальной алгебры, т.е. выражений, описанных в предыдущих разделах). Понятие реляционной полноты подробнее обсуждается в следующей главе. 6.7. Дополнительные операторы Многие авторы предлагали новые алгебраические операторы после определения Код-дом первоначальных восьми. В этом разделе детально рассматривается несколько таких операторов- SEMI JOIN (полусоединение), SEMIMINUS (полувычитание), EXTEND (расширение), SUMMARIZE (обобщение) и TCLOSE (транзитивное замыкание). В терминах языка Tutorial D синтаксис этих операторов выглядит следующим образом. <полусоединение> ::= <реляционное выражение> SEMIJOIN <реляционное выражение> <полувычитание> ::= <реляционное выражение> SEMIMINUS <реляционное выражениё> <расширение> ::= EXTEND <реляционное выражение> ADD <список добавляемых расширений> <добавляемое расширение> ::= <выражение> AS <имя атри6ута> <о6о6щение> ::= SUMMARIZE <реляционное выражение> PER <реляционное выражение> ADD <список добавляемых о6о6щений> <до6авляемое о6о6щение> ::= <тип о6о6щениЯ> [ ( <скалярное выраженне> ) ] AS <имя атрн6ута> <тип обо6щеннЯ> ::= COUNT SUM AVG МАХ MIN ALL ANY I COUNTD I SUMD I AVGD <транзнтивное замыканне> ::= TCLOSE <реляционное выражение> Значения различных параметров <реляцнонное выраженне>, упомянутые в этом синтаксисе BNF, не должны иметь тип <не проекцнЯ>. Полусоединение Пусть обозначения А, В, X, Y и Z будут иметь тот же смысл, который был им присвоен при определении оператора JOIN в разделе 6.4. Тогда полусоединением отношения А с отношением В (что записывается как А SEMIJOIN В, причем именно в таком порядке) по определению называется операция, эквивалентная следующей. ( А JOIN В ) { X, Y } Другими словами, полусоединением отношения А с отношением В называется результат соединения отношений А и В, для которого дополнительно выполнена операция проекции по атрибутам отношения А. Тело полученного в результате выполнения этой операции отношения, неформально говоря, состоит из тех кортежей отношения А, которые имеют соответствие в отношении В. Пример. Получить значения атрибутов St, SNAME, STATUS и CITY для всех поставщиков детали с номером Р2. S SEMIJOIN ( SP WHERE Р# = Pt ( Р2 ) ) Полувычитание Снова пусть обозначения А, В, X, Y и Z имеют тот же смысл, что и при определении оператора JOIN в разделе 6.4. Тогда полувычитанием отношений А и В (что записывается как А SEMIMINUS В, причем именно в таком порядке) называется операция, эквивалентная следующему оператору. А MINUS ( А SEMIJOIN В )
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |