Специальные операции реляционной алгебры
Горизонтальный выбор, или операция фильтрации. Для определения этой операции нам необходимо ввести дополнительные обозначения. Пусть а — булевское выражение, составленное из термов сравнения с помощью связок И (∧), ИЛИ (∨), НЕ () и, возможно, скобок. В качестве термов сравнения допускаются:
Результатом операции выбора, или фильтрации, заданной на отношении R в виде булевского выражения, определенного на атрибутах отношения R, называется отношение R[α], включающее те кортежи из исходного отношения, для которых истинно условие выбора или фильтрации: Операция фильтрации является одной из основных при работе с реляционной моделью данных. Условие аможет быть сколь угодно сложным. Вертикальный выборилиоперация проецирования. Пусть R — отношение, SR = (A1, ... , An) — схема отношения R. Обозначим через B подмножество атрибутов [ Ai ]; B ⊆ { Ai }. Проекцией отношения R на набор атрибутов B, обозначаемой R[B], называется отношение со схемой, соответствующей набору атрибутов B SR[B] = B, содержащему кортежи, получаемые из кортежей исходного отношения R путем удаления из них значений, не принадлежащих атрибутам из набора В. R[B] = { r[B] }. По определению отношений все дублирующие кортежи удаляются из результирующего отношения. Операция проектирования позволяет получить только требуемые характеристики моделируемого объекта. Чаще всего операция проектирования употребляется как промежуточный шаг в операциях горизонтального выбора, или фильтрации. Кроме того, она используется самостоятельно на заключительном этапе получения ответа на запрос. Условное соединение. В отличие от рассмотренных специальных операций реляционной алгебры: фильтрации и проецирования, которые являются унарными, то есть производятся над одним отношением, операция условного соединения является бинарной, то есть исходными для нее являются два отношения, а результатом — одно. Пусть R = { r }, Q = { q } - исходные отношения, SR, SQ - схемы отношений R и Q соответственно. Тогда соединением отношений R и Q при условии β будет подмножество декартова произведения отношений R и Q, кортежи которого удовлетворяют условию β, рассматриваемому как выполнение условия: r.Ai θi q.Bi,i=1-k, где k — число атрибутов, входящих в наборы А и В, а θi — конкретная операция сравнения. Условие должно принимать значение «истина» для всех сравнений. R [β] Q = { (r, q) ∧ r.Ai θi q.Bi = true, i=1,k} Операция деления. Для определения операции деления рассмотрим сначала понятие множества образов. Пусть R — отношение со схемой SR = (A1, A2 ,…, Ak). Пусть A — некоторый набор атрибутов А ⊆ { Ai} i=1,k , A1 — набор атрибутов, не входящих в множество A. Пересечение множеств A и A1 пусто: A ∩ A1 = ∅; объединение множеств равно множеству всех атрибутов исходного отношения: A ∪ A1 = SR. Тогда множеством образов элемента у проекции R[A] называется множество таких элементов y проекции R[A] , для которых сцепление (x, y) является кортежами отношения R, то есть Дадим теперь определение операции деления. Пусть даны два отношения Rи T соответственно со схемами: SR = (A1, A2, ... , Ak); ST = (B1, B2, ... , Bm); A и B - наборы атрибутов этих отношений, одинаковой длины (без повторений); A ⊆ SR ; B ⊆ ST. Атрибуты A1 — это атрибуты из R, не вошедшие в множество A. Пересечение множеств A ∩∩ A1 = ∅— пусто и A ∪ A1 = SR. Проекции R[A] и T[B] совместимы по объединению, то есть имеют эквивалентные схемы: SR[A] ~ ST[B] . Тогда операция деления ставит в соответствие отношениям R и T отношение Q = R[A:B]T, кортежи которого являются теми элементами проекции R[A1], для которых T[B] входит в построенные для них множество образов: R[A:B]T = {r | r ∈ R[A1] ∧ T[B] ⊆ {y | y ∈ R [A] ∧ (r, y) ∈ R } }. Посмотрим, как работают операции реляционной алгебры на примерах. Возьмем набор отношений, которые моделируют сдачу сессии студентами некоторого учебного заведения. R1 = <ФИО, Дисциплина, Оценка>; R2 = <ФИО, Группа>; R3 = < Группы, Дисциплина>, где R1 — информация о попытках (как успешных, так и неуспешных) сдачи экзаменов студентами; R2 — состав групп; R3 — список дисциплин, которые надо сдавать каждой группе. Будем считать, что доменом для атрибута Дисциплина будет множество всех дисциплин, преподающихся в ВУЗе, доменом для атрибута Группа будет множество всех групп ВУЗа и т. д. В каждом из приведенных примеров путем операций над исходными отношениями R1, R2, R3 формируются промежуточные отношения и результирующее отношение S:
S = (R1[Оценка = 5 ∧ Дисциплина = "БД"])[ФИО];
R4 = (R2[R3.НомерГруппы = R2.НомерГруппы ∧ R3.Дисциплина = "БД"] R3)[ФИО];
R5 = (R1 [Дисциплина = "БД"])[ФИО]; и, наконец, результат — все, кто есть в первом множестве, но не во втором: S=R4 \ R5;
S = (R1[R1.ФИО = R'1.ФИО ∧ R1.Дисциплина ≠ R'1.Дисциплина ∧ R1.Оценка <= 2 ∧ R'1.Оценка <= 2] R'1)[ФИО] Этот пример весьма интересен: для поиска строк, удовлетворяющих в совокупности условию больше одного, применяется операция соединения отношения с самим собой. Поэтому мы как бы взяли копию отношения R1 и назвали ее R'1.
R4 = (R2[R2 Группа = R3.Группа] R3)[ФИО, Дисциплина]; Строим список пар <студент—дисциплина>, где получена оценка "отлично": R5 = (R1[Оценка = 5])[ФИО, Дисциплина]; Строим список студентов, что-либо не сдавших на "отлично": R6 = (R4 \ R5)[ФИО]. Исключив последнее отношение из общего списка студентов, получаем результат: S = R2[ФИО] \ R6 Обратите внимание, что для получения множества студентов, что-либо не сдавших на "отлично" (R6), мы осуществили "инверсию" множества всех отлично сданных пар <студент—дисциплина> (R5) путем вычитания его из предварительного построенного универсального множества (R4).
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1404)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |