Введение в системы БД (542480), страница 49
Текст из файла (страница 49)
6.2. Тогда выражение А И1ИВБ В (см. рис.6.2, в) представляет поставщиков, которые находятся в Лондоне и не поставляют деталь под номером 'Р1', а выражение В И1ИББ А(см. рис. 6.2, г) представляет поставщиков, которые поставляют деталь под номером 'Р1' и не находятся в Лондоне. Заметьте, что при вычитании учитывается порядок следования операндов, точно так, как в обычной арифметике (например, 5-2 и 2-5 — это не одно и то же). Произведение В математике декартово произведение (или для краткости — просто произведение) двух множеств является множеством всех таких упорядоченных пар элементов, что первый элемент в каждой паре берется из первого множества, а второй элемент в каждой паре берется из второго множества.
Следовательно, декартово произведение двух отношений должно быть множеством упорядоченных пар корглелсей. Но, опять-таки, необходимо сохрани~ь свойство замкнутости; иначе говоря, результат должен содержать кортежи, а неупорядоченные пары кортежей. Поэтому версия декартова произведения в реляционной алгебре представляет собой расширениию форму операции, в которой каждая упорядоченная пара кортежей заменяется одним кортежем, образованным из двух сцепленных кортежей этой пары.
"Сцепление" здесь означает объединение (в смысле теории множеств, а не реляционной алгебры), т.е. кортежи ( А1:а1, А2:а2, ..., Аапап ) и ( В1:Ь1, В2:Ь2, ..., Вп:Ьп ] объединяются в один кортеж. ( А1:а1, А2:а2, ..., Аж:ап, В1:Ь1, В2:Ь2, ..., Вл:Ьп ) Другая проблема, возникающая в связи с декартовым произведением, заключается в том, что результирующее отношение должно иметь правильно сформированный заголовок. Очевидно, что заголовок результирующего отношения должен содержать все атрибугы из двух исходных отношений. Однако, если эти два заголовка имеют какие-то общие имена атрибутов, возникает проблема. Если допустить подобную операцию, то результируюций заголовок будет имеп два одинаковьж атрибута, а значит, будет "неверно сформированным". Поэтому, чтобы построить декартово произведение двух отношений, которые имеют какие-то общие имена атрибуюв, необходимо прежде применить оператор ВЕИАИЕ для переименования соответствующих атрибутов.
В результате можно определить (реляционное) декартово произведение двух отношений А и В (что записывается как А ТТИЕБ В), где отношения А и В не имеют общих имен атрибутов, как новое отношение с заголовком, представляющим собой объединение заголовков двух исходных отношений А и В, и с телом, состоящим из множества всех кортежей Ь, таких, что каждый кортеж Ь представляет собой объединение двух кортежей, один из которых принадлежит отношению А, а другой — отношению В. Обратите внимание, что кардинальность результата равняется произведению кардинальностей исходных отношений А н В, а степень равняется сумме их степеней.
Пример. Пусть отношения А и В будут такими, как показано на рис. 6.3 (отношение А представляет, например, номера всех существующих на данный момент поставщиков, а отношение  — номера всех поставляемых на текущий момент деталей). Тогда произведение А Т1ИЕБ  — это набор всех возможных на текущий момент пар из значений номера поставщика и номера детали. Глава б. Реляционная алгебра го1 Декартово произведение (А Т1МЕЯ В) Рис.
б.З. Пример операции декартова произведения Выборка Пусть задано отношение А с атрибутами Х и Х (и, возможно, с другими атрибутами), а символ О обозначает любой скалярный оператор сравнения (=, и, », и т.д.), такой, что условие Х О Х корректно определено и при заданных значениях атрибутов Х и Х его проверка дает значение истина или лоись. Тогда 9-выборкой из отношения А по атрибутам Х и Х (что записывается, например, как Я ННЕКЕ С1ТХ = 'Ьопбод', причем именно в этом порядке) называется отношение, имеющее тот же заголовок, что и отношение А, и тело, содержащее множество всех кортежей С отношения А, для которых проверка условия Х О Х дает значение истина.
Необходимо отметить следующее. 1, Обращение к оператору выбора, в частности литерал, может быть указано как вместо атрибута Х, так и вместо атрибута Х (или вместо обоих); на практике это обычный случай. Тем не менее этот "обычный случай" следует рассматривать всего лишь как сокращение. Например, оператор выборки Я ННЕКЕ С1ТХ = 'Еопбоп', по сути, является всего лишь сокращенной записью следующего выражения: ( ЕХТЕНН Я ЫН '1апбоп' АЯ ТЕМР ) ННЕКЕ С1ТХ = ТЕИР (здесь имя ТЕИР может быть произвольным). Оператор ЕХТЕНС будет рассмотрен в разделе 6П. 2. Условия в форме Ь (где Ь вЂ” обращение к оператору логического выбора) являются допустимыми.
Часть П. Реляиионная лзодель Я2 32 32 32 Я2 Я2 Р1 Р2 РЗ Р4 Р5 Рб ЯЗ ЯЗ ЯЗ ЯЗ ЯЗ ЯЗ Р1 Р2 РЗ Р4 Р5 Рб Я4 34 34 34 34 34 Р1 Р2 РЗ Р4 Р5 Рб 3. В приведенном определении операции выборки в выражении ИНЕНЕ допускаются только единичные операции сравнения. Однако на основании свойства замкнутости можно недвусмысленно расширить определение до такой формы, в которой условие в выражении ИНЕНЕ будет содержать произвольное число логических сочетаний подобных единичных сравнений благодаря следующим тождествам.
А ИНЕНЕ с1 АН() сг — ( А ИНЕНЕ с1 ) 1ИТЕНЯЕСТ ( А ИНЕНЕ сг ) А ИНЕНЕ с( ОН сг = ( А ИНЕНЕ с1 ) ННТСН ( А ИНЕНЕ сг ) А ИНЕНЕ НОТ с =- А И1ННЯ ( А ИНЕНЕ с ) Поэтому впредь мы будем подразумевать, что параметр <логяческое вирахевве> в предложении ИНЕНЕ для операции выборки содержит произвольное число логических сочетаний единичных сравнений (с использованием круглых скобок, если необходимо указать желаемый порядок вычисления), где каждое единичное сравнение, в свою очередь, включает либо атрибуты указанного отношения, либо обращение к оператору выборки, либо и то, и другое. Обратите внимание, что значение параметра <логическое вирахеяве> может быть истолковано как истина или ложь для каждого заданного кортежа в отдельности независимо от остальных.
Описанное выше значение параметра <логическое вирахение> принято называть условием выборки. В результате выполнения оператора выборки будет получено "горизонтальное" подмножество заданного отношения, т.е. такое подмножество кортежей заданного отношения, для которого удовлетворяется указанное условие выборки. На рис. б.4 приводится несколько примеров операции выборки.
Рис. блй Примеры операций выборки Проекция Пусть задано отношение А с атрибутами Х, Т, ..., Х (и, возможно, с другими). Тогда проекцией отношения А по атрибутам Х, У, ..., Б (что записывается как А ( Х, Т, ..., Х )) называется отношение,удовлетворяющее следующим требованиям. ° Его заголовок получается из заголовка отношения А посредством удаления из него всех атрибутов, не входящих в множество (Х, У, ..., Х). гоз Глава б. Реляционная алгебра ° Его тело содержит множество всех кортежей вида (Х:х, Х:у, ..., Е:г), таких, для которых в отношении А значение атрибута Х равно х, значение атрибута Х равно у,..., значение атрибута Е равно г.
Таким образом, с помощью оператора проекции создается "вертикальное" подмножество заданного отношения, т.е. подмножество, получаемое путем исключения всех атрибутов, не указанных в заданном списке атрибутов, с последующим исключением дублирующихся кортежей (подкортежей) из того, что осталось от исходного отношения. Из этого определения можно сделать следующие выводы. 1. Никакой атрибут не может быть указан в списке атрибутов более одного раза (почему?). 2. Если в списке атрибутов указаны все атрибуты отношения А, то такая проекция представляет собой тождественную проекцию.
3. Проекция вида А( ) (т.е. такая, в которой список атрибутов пуст) также допустима. Она представляет собой нулевую проекцию. Подробности приводятся в упр.6.8— 6.10 в конце этой главы. Несколько примеров операции проекции показано на рис. 6.5. Обратите внимание, что в первом примере (проекция отношения поставщиков по атрибуту С1ТХ), несмотря на то что исходное отношение Я имеет пять кортежей (и, следовательно, пять значений городов), в результирующем отношении присутствует только три города, поскольку дублируюшиеся кортежи исключены. Аналогичные замечания можно сделать и для других примеров. Рис.
6.5. Примеры операций проекции Отметим, что часто на практике удобно указывать не те атрибуты, по которым берется проекция, а те, которые проекцией "отбрасываются". Например, удобнее сказать "проекция, исключающая из отношения Р атрибут НЕ10НТ" вместо "проекция отношения Р по атрибутам Р$, РНАИЕ, СОЬОА и С1ТХ". Р ( АЬЬ ВОТ НЕ10НТ ) 204 Часть 11. Реляционная модель Соединение Операция соединения имеет несколько разновидностей. Однако наиболее важным, без сомнения, является естественное соединение, причем настолько важным, что общий термин соединение почти всегда используется для обозначения именно естественного соединения.