С.Д. Кузнецов - Основы баз данных (1121716), страница 14
Текст из файла (страница 14)
оно должно обладать и телом, и заголовком. Только в этом случае можно будет строить вложенные выражения. Заголовок отношения представляет собой множество пар <жя-атрибута, ння-домена>. Если посмотреть на общий обзор реляционных операций, приведенный в предыдущем подразделе, то видно, что домены атрибутов результирующего отношения однозначно определяются доменами отно- 58 Реляционная алгебра Коддя Лекция 3 шений-операндов. Однако с именами атрибутов результата не всегда все так просто.
Например, представим себе, что у отношений-операндов операции декартова произведения имеются одноименные атрибуты с одинаковыми доменами. Каким был бы заголовок результирующего отношения? Поскольку это множество, в нем не должны содержаться одинаковые элементы.
Но и потерять атрибут в результате недопустимо. А это значит, что в таком случае вообще невозможно корректно выполнить операцию декартова произведения. Аналогичные проблемы могут возникать и в случаях других двуместных операций. Для разрешения проблем в число операций реляционной алгебры вводится операция переименования.
Ее следует применять в том случае, когда возникает конфликт именования атрибутов в отношениях- операндах одной реляционной операции. Тогда к одному из операндов сначала применяется операция переименования, а затем основная операция выполняется уже без всяких проблем. Более строго мы определим операцию переименования в следующей лекции, а пока лишь заметим, что результатом этой операции является отношение, совпадающее во всем с отношением-операндом, кроме того, что имя указанного атрибута изменено на заданное имя. В дальнейшем изложении мы будем предполагать применение операции переименования во всех конфликтных ситуациях.
Особенности теоретико-множественных операций реляционной алгебры Хотя в основе теоретико-множественной части реляционной алгебры Колла лежит классическая теория множеств, соответствующие операции реляционной алгебры обладают некоторыми особенностями. Операции объединения, пересечения, взятия разности. Совместимость по объединению Начнем с операции объединения отношений (все, что будет сказано по поводу объединения, верно и для операций пересечения и взятия разности отношений). Смысл операции объединения в реляционной алгебре в целом остается теоретико-множественным.
Напомним, что в теории множеств: ° результатом объединения двух множеств А)а) и В()з) является такое множество с(с), что для каждого с либо существует такой элемент а, принадлежащий множеству л, что с=а, либо существует такой элемент й, принадлежащий множеству в, что с=Ь; 59 Основы баз данных Курс ° пересечением множеств А и В является такое множество С (с), что лля любого с существуют такие элементы а, принадлежащий множеству А, и Ь, принадлежаший множеству в, что с=а=Ь; ° разностью множеств А и В является такое множество с ( с), что лля любого с существует такой элемент а, приналлежаший множеству А, что с=а, и не существует такой элемент Ь, принадлежаший В, что с=Ь. Рис. 3.2.
Иллюстрация результатов теоретико-множественных операций Но если в теории множеств операция объединения осмысленна для любых двух множеств-операндов, то в случае реляционной алгебры результатом операции обьединения должно являться отношение. Если в реляционной алгебре допустить возможность теоретико-множественного объединения двух произвольных отношений (с разными заголовками), то, конечно, результатом операции будет множество, но множество разнотипных кортежей, т. е.
не отношение. Если исходить из требования замкнутости реляционной алгебры относительно понятия отношения, то такая операция объединения является бессмысленной. Зти соображения подводят к понятию совместимости отношений по обьединению: два отношения совместимы по обьединению в том и только в том случие, когда обладиют одинаковыми заголовками. В развернутой форме это означает, что в заголовках обоих отношений солержится один и тот же набор имен атрибутов, и одноименные атрибуты определены на одном и том же домене (эта развернутая формулировка, вообше говоря, является излишней, но она пригодится нам в следуюшем абзаце). Если два отношения совместимы по объединению, то при обычном выполнении над ними операций объединения, пересечения и взятия разности результатом операции является отношение с корректно определенным заголовком, совпадающим с заголовком каждого из отношений-операндов.
Напомним, что если два отношения «почти» совместимы по объединению, т. е. совместимы во всем, кроме имен атрибутов, то до выполнения операции типа объединения эти отношения можно сделать полностью совместимыми по объединению путем применения операции переименования. бо Реляционная алгебра Кодда Лекция 3 Для иллюстрации операций объединения, пересечения и взятия разности предположим, что в базе данных имеются два отношения СЛУЖАЩИЕ В ПРОЕКТЕ 1 и СЛУЖАЩИЕ В ПРОЕКТЕ 2 с одинаковыми схемами (СЛУ нОмЕР, СЛУ имя, СЛУ ЗАРП, СЛУ ОТД ПОМЕР) (имена доменов опущены по причине очевидности).
Каждое из отношений содержит данные о служащих, участвуюших в соответствующем проекте. На рис. 3.3 показано примерное наполнение каждого из двух отношений (некоторые служашие участвуют в обоих проектах). Рис. 3.3. Примерное наполнение отношений СЛУЖАЩИЕ В ПРОЕКТЕ 1 и СЛУЖАЩИЕ В ПРОЕКТЕ 2 Тогда выполнение операции СЛУЖАЩИЕ В ПРОЕКТЕ 1 ПИТОМ СЛУЖАЩИЕ В ПРОЕКТЕ 2 позволит получить информацию обо всех служаших, участвуюших в обоих проектах.
Выполнение операции СЛУЖАЩИЕ В ПРОЕКТЕ 1 1МТЕКВЕСТ СЛУЖАЩИЕ В ПРОЕКТЕ 2 позволит получить данные о служаших, которые одновременно участвуют в двух проектах. Наконец, операция служАщие в ЛРОекте 1 мтмсд СЛУЖАЩИЕ В ПРОЕКТЕ 2 выработает отношение, содержащее кортежи служаших, которые участвуют только в первом проекте.
Результаты этих операций показаны на рис. 3.4. 61 Основы баз данных Курс СЛУЖАЩИЕ В ПРОЕКТЕ 1 ЦМ10МСПУЖАЩИЕ В ПРОЕКТВ 2 СЛУЖАЩИЕ В ПРОЕКТЕ 1 1МТЕйЯЕСТ СЛУЖАЩИЕ В ПРОЕКТЕ 2 СЛУЖАЩИЕ В ПРОЕКТЕ 1 МТМ'о'Я СПУЖАХВИ В ПРОЕКТЕ 2 Рис. 3.4. Результаты выполнения операций ОН1ОМ, 1МТЕЯЯЯСт И М1НЦЯ Заметим, что включение в состав операций реляционной алгебры трех операций объединения, пересечения и взятия разности является, очевидно, избыточным, поскольку, например, операция пересечения выражается через операцию взятия разности*. Тем не менее Кодл в свое время решил включить все три операции, исходя из интуитивных потребностей далекого от математики потенциального пользователя системы реляционных БД.
'Легхоувсаносх,чго л тнтввввст в = л мшоз ~л мткзв в~ —. в мтмзв ~в и~нов лм 62 Реляционная алгебра Кодде Лекция 3 Операция расширенного декартова произведения и совместимость отношений относительно этой операции Другие проблемы связаны с операцией взятия декартова произведения двух отношений. В теории множеств декартово произведение может быть получено для любых двух множеств, и элементами результирующего множества являются пары, составленные из элементов первого и второго множеств.
Если говорить более точно, декартовым произведением мно- жеста А )а) ив (Ь) является такое множество пар с )<с1, с2>), чтодля каждого элемента <с1, с2> множества С существуют такой элемент а множества А, что с1=е, и такой элемент Ь множества В, что с2=Ь. Поскольку отношения являются множествами, для любых двух отношений возможно получение прямого произведения. Но результат не будет отношением! Элементами результата будут не кортежи, а пары кортежей. Поэтому в реляционной алгебре используется специализированная форма операции взятия декартова произведения — расширенное декартово произведение отношений. При взятии расширенного декартова произведения двух отношений элементом результирующего отношения является кортеж, который представляет собой объединение одного кортежа первого отношения и одного кортежа второго отношения.
Приведем более точное определение операции расширенного декартова произведения. Пусть имеются два отношения П1 )а„а„..., а„) и Я2 )Ь,, Ь,, ..., Ь.). Тогда результатом операции П1 ТТМЕЯ Я2 является отношение л (а„а„..., а,-„Ь,, Ь„..., Ь,), тело которого является множеством кортежей вида (г.„г„ь...., г„„, гь;, гм, ..., гш) таких, что ) г.„ г„,, ..., г,„) входит в тело Я1, а (гм, г„, ..., г, ) входит в тело Л2.
Но теперь возникает вторая проблема — как получить корректно сформированный заголовок отношения-результата? Поскольку схема результирующего отношения является объединением схем отношений-операндов, то очевидной проблемой может быть именование атрибутов результирующего отношения, если отношения-операнды обладают одноименными атрибутами.
Эти соображения приводят к введению понятия совместимости па взятию расширенного декартова произведения. Два отношения совместимы по взятию расширенного декартова произведения в том и только в том случае, если пересечение мнахсеств имен атрибутов, взятых из их схем отношений, пуста. Любые два отношения всегда могут стать совместимыми по взятию декартова произведения, если применить операцию переименования к одному из этих отношений. Для наглядности предположим, что в придачу к введенным ранее отношениям СЛУЖАЩИЕ В ПРОЕКТЕ 1 и СЛУЖАЩИЕ В ПРОЕКТЕ 2 в базе данных содержится еще и отношение ПРОЕКТЫ со схемой (ЛРОЕкт ВАЗВ, Основы баз данных Ку с пРОект РУк) (имена доменов снова опущены) и телом, показанным на рис. 3.5.
На этом же рисунке показан результат операции СЛУЖАЩИЕ В ПРОЕКТЕ 1 Т1МЕЯ ПРОЕКТЫ. Следует заметить, что операция взятия декартова произведения не является слишком осмысленной на практике. Во-первых, мощность тела ее результата очень велика лаже при допустимых мощностях операн- ПРОЕКТЫ спужжщие В пвоекти 1 т1мея ПРоекти слу отд исмаа вгоахт нхзв лвовхт Рук слу иомвг слу имл слу ЗАРз 2934 22000.00 ПРОЕКТ 1 Иванов 3!0 Иванов ПРОЕКТ! 30000.00 Иванов 2935 Петров 310 ПРОЕКТ 1 2936 Сидоров 18000.00 313 Иванов 20000.00 2937 Федоров 310 ПРОЕКТ 1 Иванов ПРОЕКТ 1 ПРОЕКТ 2 2938 22000.00 22000.00 315 Иванов Иваиенко Иванова Иванов 2934 310 30000.00 ПРОЕКТ 2 2935 Петров 310 Иваненко ПРОЕКТг Иваненко 2936 Сидоров 18000.00 3!3 20000.00 22000.00 ПРОЕКТ 2 ПРОЕКТ 2 Иваненко Иваненко 2931 Федоров Иванова 310 3!5 2938 Рис.