|
Программирование >> Хронологические базы данных
3. в приведенном определении операции выборки в выражении WHERE допускаются только единичные операции сравнения. Однако на основании свойства замкнутости можно недвусмысленно расширить определение до такой формы, в которой условие в выражении WHERE будет содержать произвольное число логических сочетаний подобных единичных сравнений благодаря следующим тождествам. А WHERE с1 AND с2 = ( А WHERE с1 ) INTERSECT ( А WHERE с2 ) А WHERE ci OR с2 = { А WHERE cl ) UNION { A WHERE c2 ) A WHERE NOT с = A MINUS ( A WHERE с ) Поэтому впредь мы будем подразумевать, что параметр <логическое выражение> в предложении WHERE для операции выборки содержит произвольное число логических сочетаний единичных сравнений (с использованием круглых скобок, если необходимо указать желаемый порядок вычисления), где каждое единичное сравнение, в свою очередь, включает либо атрибуты указанного отношения, либо обращение к оператору выборки, либо и то, и другое. Обратите внимание, что значение параметра <логическое выражение> может быть истолковано как истина или ложь для каждого заданного кортежа в отдельности независимо от остальных. Описанное выше значение параметра <логическое выражение> принято называть условием выборки. В результате выполнения оператора выборки будет получено горизонтальное подмножество заданного отношения, т.е. такое подмножество кортежей заданного отношения, для которого удовлетворяется указанное условие выборки. На рис. 6.4 приводится несколько примеров операции выборки.
P WHERE WEIGHT < WEIGHT (14.0)
SP WHERE S# = S# ( 86 ) OR P# - P# ( PT ) Рис. 6.4. Пргшеры операций выборки Проекция Пусть задано отношение А с атрибутами X, Y, ... , Z (и, возможно, с другими). Тогда проекцией отношения А по атрибутам X, Y, ... , Z (что записывается как А { X, Y, ... , Z }) называется отношение, удовлетворяющее следующим требованиям. Его заголовок получается из заголовка отношения А посредством удаления из него всех атрибутов, не входящих в множество {X, Y, ... , Z}. Его тело содержит множество всех кортежей вида {Х:х, Y:y, ... , Z:z}, таких, для которых в отношении А значение атрибута X равно х, значение атрибута Y равно у,значение атрибута Z равно z. Таким образом, с помощью оператора проекции создается вертикальное подмножество заданного отношения, т.е. подмножество, получаемое путем исключения всех атрибутов, не указанных в заданном списке атрибутов, с последующим исключением дублирующихся кортежей (подкортежей) из того, что осталось от исходного отношения. Из этого определения можно сделать следующие выводы. 1. Никакой атрибут не может быть указан в списке атрибутов более одного раза (почему?). 2. Если в списке атрибутов указаны все атрибуты отношения А, то такая проекция представляет собой тождественную проекцию. 3. Проекция вида А{ } (т.е. такая, в которой список атрибутов пуст) также допустима. Она представляет собой нулевую проекцию. Подробности приводятся в упр. 6.8-6.10 в конце этой главы. Несколько примеров операции проекции показано на рис. 6.5. Обратите внимание, что в первом примере (проекция отношения поставщиков по атрибуту CITY), несмотря на то что исходное отношение S имеет пять кортежей (и, следовательно, пять значений городов), в результирующем отношении присутствует только три города, поскольку дублирующиеся кортежи исключены. Аналогичные замечания можно сделать и для других примеров. S { CITY } CITY London Paris Athens P { COLOR, CITY }
( S WHERE CITY = PARIS ) { S# } i Puc. 6.5. Примеры операций проекции Отметим, что часто на практике удобно указывать не те атрибуты, по которым берется проекция, а те, которые проекцией отбрасываются . Например, удобнее сказать проекция, исключающая из отношения Р атрибут WEIGHT вместо проекция отношения Р по атрибутам Р, PNAME, COLOR и CITY . Р { ALL BUT WEIGHT } Соединение Операция соединения имеет несколько разновидностей. Однако наиболее важным, без сомнения, является естественное соединение, причем настолько важным, что общий термин соединение почти всегда используется для обозначения именно естественного соединения. Этой практики мы будем придерживаться и в данной книге. Далее приводится определение (оно несколько абстрактное, но мы считаем, что читатели уже знают о естественном соединении на интуитивно понятном уровне из главы 3). Пусть отношения А и В имеют заголовки { XI, Х2, Хт, Y1, Y2, Yn } { Y1, Y2, ... , Yn, Zl, Z2, ... , Zp } соответственно, т.е. атрибуты Yl, Y2, ... , Yn (и только они) - общие для двух этих отношений, XI, Х2, ... , Хт - остальные атрибуты отношения А и Z1, Z2, ... , Zp - остальные атрибуты отношения В. Далее мы будем рассматривать выражения {XI, Х2, ... , Xm},{Yl, Y2, ... , Yn}H{Zl, Z2, ... , Zp} как три составных атрибута X, Y и Z соответственно. Тогда естественным соединением отношений А и В (что записывается как А JOIN В) называется отношение с заголовком {X, Y, Z} и телом, содержащим множество всех кортежей вида {Х:х, Y:y, Z:z}, таких, для которых в отношении А значение атрибута X равно X, а значение атрибута Y равно у и в отношении В значение атрибута Y равно у, а значение атрибута Z равно г. Пример естественного соединения (естественное соединение S JOIN Р по общему атрибуту CITY) приведен на рис. 6.6.
Рис. 6.6. Естественное соединение S JOIN P Замечание. Хотелось бы еще раз остановиться на том факте (хотя это неоднократно отмечалось выше и явно показано на рис. 6.6), что соединения необязательно выполняются по внешнему ключу и соответствующему первичному ключу, хотя такие соединения весьма распространены и являются важным частным случаем. Теперь обратимся к операции Q-соединения. Она предназначается для тех случаев (сравнительно редких, но всем известных), когда нужно соединить два отношения на основе некоторых условий, отличных от эквивалентности. Пусть отношения А и В не имеют общих
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |