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

1 ... 54 55 56 [ 57 ] 58 59 60 ... 348


Пример. Пусть отношения А и В будут такими, как показано на рис. 6.2 (отношение А представляет поставщиков из Лондона, а отношение В - поставщиков, которые, скажем, поставляют деталь под номером Р1). Тогда выражение А UNION В (см. рис. 6.2, а) представляет поставщиков, которые или находятся в Лондоне, или поставляют деталь под номером (или и то, и другое). Обратите внимание, что результат имеет три кортежа, а не четыре - повторяющиеся кортежи удаляются по определению. Вопрос удаления дубликатов не возникает в других традиционных операциях над множествами. Фактически еще существует только одна операция (помимо объединения), где этот вопрос актуален, - операция проекции (подробнее о ней речь идет далее в этом разделе).

SNAME

STATUS

CITY

SNAME

STATUS

CITY

SI S4

Smith Clark

20 20

London London

SI S2

Smith Jones

20 10

London Paris

а) Объединение (А UNION В)

SNAME

STATUS

CITY

SI S4 S2

Smith Clark Jones

20 20 10

London London Paris

б) Пересечение

(А INTERSECT В)

SNAME

STATUS

CITY

Smith

London

Вычитание (A MINUS B)

SNAME

STATUS

CITY

Clark

London

Вычитание (В MINUS A)

SNAME

STATUS

CITY

Jones

Paris

Puc. 6.2. Примеры операций объединения, пересечения и вычитания

Пересечение

Как и для оператора объединения, для реляционного оператора пересечения (и по тем же причинам) необходимо, чтобы его операнды были совместимы по типу. Итак, пересечением двух совместимых по типу отношений А и В (что записывается как А INTERSECT В) называется отношение того же типа с телом, состоящим из множества всех кортежей t, которые принадлежат одновременно обоим исходным отношениям А и В.

Пример. Пусть вновь отношения А и В будут такими, как показано на рис. 6.2. Тогда выражение А INTERSECT В (см. рис. 6.2, б) представляет поставщиков, которые находятся в Лондоне и поставляют деталь под номером Р1.

Вычитание

Как и для операторов объединения и пересечения, для реляционного оператора вычитания необходимо, чтобы его операнды были совместимы по типу. Тогда вычитанием двух совместимых по типу отношений А и В (что записывается как А MINUS В, причем



порядок их указания здесь играет роль) называется отношение того же типа, что и отношения А и В, с телом, состоящим из множества всех кортежей t, которые принадлежат отношению А, но не прина:1лежат отношению В.

Пример. Пусть еще раз отношения А и В будут такими, как показано на рис. 6.2. Тогда выражение А MINUS В (см. рис. 6.2, в) представляет поставщиков, которые находятся в Лондоне и не поставляют деталь под номером Р1, а выражение В MINUS А (см. рис. 6.2, г) представляет поставщиков, которые поставляют деталь под номером Р1 и не находятся в Лондоне. Заметьте, что при вычитании учитывается порядок следования операндов, точно так, как в обычной арифметике (например, 5-2и2-5 - это не одно и то же).

Произведение

в математике декартово произведение (или для краткости- просто произведение) двух множеств является множеством всех таких упорядоченных пар элементов, что первый элемент в каждой паре берется из первого множества, а второй элемент в каждой паре берется из второго множества. Следовательно, декартово произведение двух отношений должно быть множеством упорядоченных пар кортежей. Но, опять-таки, необходимо сохранить свойство замкнутости; иначе говоря, результат должен содержать кортежи, а не упорядоченные пары кортежей. Поэтому версия декартова произведения в реляционной алгебре представляет собой расширенную форму операции, в которой каждая упорядоченная пара кортежей заменяется одним кортежем, образованным из двух сцепленных кортежей этой пары. Сцепление здесь означает объединение (в смысле теории множеств, а не реляционной алгебры), т.е. кортежи { Altai, А2:а2, ..., Am:am } и { В1: Ы, В2: Ь2, ..., Вп: Ьп } объединяются в один кортеж.

{ А1:а1, А2:а2, Amtam, Bl:bl, В2:Ь2, ВпгЬп }

Другая проблема, возникающая в связи с декартовым произведением, заключается в том, что результирующее отношение должно иметь правильно сформированный заголовок. Очевидно, что заголовок результирующего отношения должен содержать все атрибуты из двух исходных отношений. Однако, если эти два заголовка имеют какие-то общие имена атрибутов, возникает проблема. Если допустить подобную операцию, то результирующий заголовок будет иметь два одинаковых атрибута, а значит, будет неверно сформированным . Поэтому, чтобы построить декартово произведение двух отношений, которые имеют какие-то общие имена атрибутов, необходимо прежде применить оператор RENAME для переименования соответствующих атрибутов.

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

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




р# PI

Р2 РЗ Р4 Р5 Р6

Декартово произведение (А TIMES В)

Puc. 6.3. Пример операции декартова произведенш

Выборка

Пусть задано отношение А с атрибутами X и У (и, возможно, с другими атрибутами), а символ 0 обозначает любой скалярный оператор сравнения (=, т, >, > и т.д.), такой, что условие X 0 Y корректно определено и при заданных значениях атрибутов X и Y его проверка дает значение истина или ложь. Тогда 0-выборкой из отношения А по атрибутам X и Y (что записывается, например, как S WHERE CITY = London, причем именно в этом порядке) называется отношение, имеющее тот же заголовок, что и отношение А, и тело, содержащее множество всех кортежей t отношения А, для которых проверка условия X 0 Y дает значение истина.

Необходимо отметить следующее.

1. Обращение к оператору выбора, в частности литерал, может быть указано как вместо атрибута X, так и вместо атрибута Y (или вместо обоих); на практике это обычный случай. Тем не менее этот обычный случай следует рассматривать всего лишь как сокращение. Например, оператор выборки

S WHERE CITY = London,

по сути, является всего лишь сокращенной записью следующего выражения: ( EXTEND S ADD London AS TEMP ) WHERE CITY = TEMP

(здесь имя TEMP может быть произвольным). Оператор EXTEND будет рассмотрен в разделе 6.7.

\2. Условия в форме b (где b - обращение к оператору логического выбора) являются допустимыми.



1 ... 54 55 56 [ 57 ] 58 59 60 ... 348

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