|
Программирование >> Хронологические базы данных
Пример. Пусть отношения А и В будут такими, как показано на рис. 6.2 (отношение А представляет поставщиков из Лондона, а отношение В - поставщиков, которые, скажем, поставляют деталь под номером Р1). Тогда выражение А UNION В (см. рис. 6.2, а) представляет поставщиков, которые или находятся в Лондоне, или поставляют деталь под номером (или и то, и другое). Обратите внимание, что результат имеет три кортежа, а не четыре - повторяющиеся кортежи удаляются по определению. Вопрос удаления дубликатов не возникает в других традиционных операциях над множествами. Фактически еще существует только одна операция (помимо объединения), где этот вопрос актуален, - операция проекции (подробнее о ней речь идет далее в этом разделе).
Вычитание (A MINUS B)
Вычитание (В MINUS A)
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 - обращение к оператору логического выбора) являются допустимыми.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |