Главная страница
Навигация по странице:

  • Декартово произведение

  • Декартово произведение А х В

  • Выборка STUDENTS [Группа = 382]

  • Операции в базах данных. Тема 2.3 Операции реляционной алгебры. Тема 3 Операции реляционной алгебры


    Скачать 258.39 Kb.
    НазваниеТема 3 Операции реляционной алгебры
    АнкорОперации в базах данных
    Дата16.09.2022
    Размер258.39 Kb.
    Формат файлаdocx
    Имя файлаТема 2.3 Операции реляционной алгебры.docx
    ТипДокументы
    #681007

    Тема 2.3 Операции реляционной алгебры.

    при разработке реляционной модели Эдгар Кодд ввел реляционную алгебру, которая состоит из набора операторов, использующих отношения в качестве операндов и возвращающих отношения в качестве результата. «Начальная алгебра» включает восемь операций:

    - традиционные операции над множествами: объединение, пересечение, вычитание, декартово произведение;

    - специальные реляционные операции: выборка, проекция, сединение, деление.

    Говоря о реляционной алгебре, нельзя обойти вниманием свойство замкнутости. Оно заключается в том, что результат реляционной операции над отношением также является отношением. Следовательно, результат одной операции может использоваться в качестве исходных данных для другой. Таким образом, можно использовать вложенные выражения. Там, где это, возможно, выполняется правило наследования имен атрибутов: соответствующие атрибуты результата будут называться так же, как у исходных отношений. В некоторых случаях также будет выполняться наследование потенциальных ключей.

    Введем еще одно определение. Два реляционных отношения совместимы по типу если:

    1) каждое из них имеет одно и то же множество атрибутов;

    2) соответствующие атрибуты (т.е. атрибуты с одинаковыми именами), определены на одном и том же домене.

    Объединение

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

    Так как в отношении не может быть двух одинаковых кортежей, операция объединения может сопровождаться удалением дубликатов. Это произойдет в том случае, если полностью совпадающие кортежи встретятся в объединяемых отношениях. А и В: в множестве кортежей, составляющих тело нового отношения, не может быть полностью совпадающих элементов. Степень результата будут равна степени исходных отношений, а кардинальное число - не больше, чем сумма кардинальных числе исходных отношений.

    Правила записи реляционных операций у разных авторов несколько отличаются. Для записи объединения используют, как правило, одно из двух обозначений:

    A ᵕ В

    Aᵕ NION В

    Первая из этих форм записи аналогична принятой в теории множеств, вторая более близка к форме записи, используемой в языках запросов к БД.

    Пересечение

    Пересечением двух совместимых по типу отношений А и В называется отношение с тем же заголовком, что у исходных, и телом, состоящим из множества всех кортежей, принадлежащих обоим отношениям одновременно.

    Записывается операция так:

    А ᵔ В A INTERSECT В

    В Кардинальное число результата пересечения будет не больше, чем наименьшее из кардинальных чисел отношений А и В, степень - равна степеням исходных отношений.

    Вычитание

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

    А \ В A MINUS В

    Кардинальное число результата будет не больше кардинального числа А, степень - равна степеням исходных отношений. Поясним введенные определения на примерах. Пусть отношения А и В заданы так, как представлено в табл. 4.2 и 4.3 соответственно. Подчеркиванием обозначено, что атрибут StudID является первичным ключом. Тогда результаты выполнения объединения, пересечения и вычитания отношений А и В представлены в табл. 4.4-4.6 соответственно.

    Таблица 4.2

    Отношение А

    StudID

    ФИО

    Группа

    123

    Иванов И.И

    382

    124 

    Петров П.П.

    382

    Таблица 4.3

    Отношение В

    StudID

    ФИО

    Группа

    123

    Иванов И.И.

    382

    127

    Сидоров С.С.

    383

    Таблица 4.4

    Объединение А ᵕ В

    StudID

    ФИО

    Группа

    123

    Иванов И.И

    382

    124

    Петров П.П

    382

    127

    Сидоров С.С.

    383

    Таблица 4.5

    Пересечение АᵔВ

    StudID

    ФИО

    Группа

    123

    Иванов И.И.

    382

    Таблица 4.6

    Вычитание А/В

    StudID

    ФИО

    Группа

    124

    Петров П.П

    382

    Необходимо обратить внимание на следующие моменты.

    Во-первых, наследование ключей и имен атрибутов позволило определить заголовок результирующего отношения. Во-вторых, встречающийся в обоих отношениях кортеж <123 , Иванов И.И., 382> в результате объединения присутствует в единственном экземпляре, в результате пересечения - является единственным кортежем в теле отношения, в результате вычитания - отсутствует. Так же как при вычитании вещественных чисел, результат А \ В в общем случае не равен результату В \ А.

    Декартово произведение

    Декартово произведение двух отношений А и В (где А и В не имеют общих имен атрибутов) определяется как отношение с заголовком, который представляет собой объединение («сцепление») двух заголовков исходных отношений А и В, и телом, состоящим из множества Т всех кортежей, таких, что кортеж t є Т представляет собой сцепление кортежа а є А и кортежа b є В. Кардинальное число результата равно произведению кардинальных чисел исходных отношений, а степень равна сумме их степеней. Запись:

    А х В

    A TIMES В

    Приведем пример декартова произведения. Исходные отношения А и В представлены в табл. 4.7 и 4.8 соответственно. В табл. 4.9 представлен результат декартова произведения.

    Таблица 4.7

    Отношение А

    StudID

    ФИО

    123

    Иванов И.И.

    124

    Петров П.П.

    127

    Сидоров С.С.

    Таблица 4.8

    Отношение В

    Предмет

    Математика

    Физика

    Таблица 4.9

    Декартово произведение А х В

    StudID

    Ф.И.О.

    Предмет

    123

    Иванов И.И.

    Математика

    123

    Иванов И.И.

    Физика

    124

    Петров П.П.

    Математика

    124

    Петров П.П.

    Физика

    127

    Сидоров С.С

    Математика

    127

    Сидоров С.С.

    Физика

    Можно убедиться, что степень произведения (табл. 4.9) равна сумме степеней исходных отношений (2+1), а кардинальное число равно произведению кардинальных чисел исходных отношений (3×2) В результирующем отношении получен составной первичный ключ, {StudID Предмет}, тогда как в исходных отношениях он был простым.

    Стоит обратить внимание на следующие особенности этой операции и операции 0 -соединения, о которой речь пойдет ниже. Если в отношениях А и В оказались одинаковые атрибуты, чтобы различать их в результате, можно условиться формировать имя такого атрибута в виде <имя отношения>. <имя атрибута>. Например, A.FIO и B.FIO.

    В некоторых случая может понадобиться декартово произведение отношения самого с собой. В этом случае надо использовать еще одну переменную отношения, иначе не удастся правильно сформировать названия атрибутов результата: А1 = A, R = А х А1. Здесь «=» обозначает оператор присваивания.

    Выборка

    Выборка - это сокращенное название -выборки, где обозначает любой скалярный оператор сравнения (=, >, < и т. д.). 6-выборкой из отношения А по атрибутам X и Y (в этом порядке) называется отношение, имеющее тот же заголовок, что и отношение А, и тело, содержащее множество Т всех кортежей из отношения А, для которых проверка условия «X Y» дает значение «истина». Формы записи:

    А [X Y]

    A WHERE X 0 Y

    Для операции выборки необходимо, чтобы атрибуты X и Y были определены на одном домене, а оператор должен иметь для него смысл. Константа может быть указана как вместо одного из атрибутов, так и вместо обоих. Рассмотрим пример. В табл. 4.10 представлено отношение STUDENTS, а в табл. 4.11 - результат выборки по условию «Группа = 382».

    Таблица 4.10

    Отношение STUDENTS

    StudID

    ФИО

    Группа

    123

    Иванов И.И.

    382

    124

    Петров П.П.

    382

    127

    Сидоров С.С.

    383

    Таблица 4.11

    Выборка STUDENTS [Группа = 382]

    StudID

    ФИО

    Группа

    123

    Иванов И.И.

    382

    124

    Петров П.П.

    382

    Расширим определение операции -выборки. Будем считать, что условие сравнения для Соединение Определены две разновидности операции соединение: естественное соединение и 0-соединение. Пусть отношения А и В имеют заголовки {X,Y} и {Y,Z}, где атрибуты X,Y,Z могут быть составными. Иными словами, только атрибут Y (или подмножество атрибутов, обозначаемое Y) присутствует как в первом, так и во втором отношении. Атрибуты с одинаковыми именами определены на одних доменах. Тогда естественным соединением отношений А и В называется отношение с заголовком {X,Y,Z,} и телом, содержащим все кортежи {X:x,Y:y,Z:z}, для которых в отношении А значение атрибута X равно х, значение атрибута Y - у, а в отношении В значение атрибута Y равно у, атрибута Z - z. -выборки может содержать произвольное число простых сравнений, соединенных логическими связками. При необходимости, могут использоваться круглые скобки.

    Для логических связок также используются альтернативные формы записи, одна из которых ближе к принятой в математической логике, другая - к форме записи в языках запросов к БД:

    - «не» может записываться как —¬ или NOT;

    - «и» - &, ^ или AND;

    -«или» - ∨ или OR.

    Теперь можно построить, например, такое выражение:

    STUDENTS WHERE ((Группа = 382) AND

    (StudID < 124))

    или используя другой формат записи STUDENTS [Группа = 382 & StudID < 124]

    Результатом станет отношение, содержащее только кортеж . <123,Иванов И.И., 382>.

    Проекция

    Проекцией отношения А по атрибутам V,W,...,Z (где каждый из атрибутов принадлежит отношению А) называется отношение с заголовком {V,W,...Z} и телом, содержащим множество всех кортежей {V:v, W:w,...Z:z}, для которых в отношении А существовал кортеж со значением атрибута V равным v, атрибута W - w, ... и атрибута Z - z. Таким образом, в результате проекции часть атрибутов исходного отношения исключается, после чего может потребоваться удаление повторяющихся кортежей.

    Проекция отношения А по атрибутам V,W,Z обозначается как

    А [V, W, Z ]

    Например, несколько изменим наше отношение STUDENTS (табл. 4.12) и сделаем проекцию по атрибуту «ФИО» (табл. 4.13).

    Таблица 4.12

    Отношение STUDENTS


    Таблица 4.13

    Проекция STUDENTS [ФИО]



    Как можно заметить, после отбрасывания атрибутов StudID и «Группа», был получен дублирующийся кортеж <” Иванов И.И.”> который в результате оставлен в одном экземпляре. Подобные ситуации могут возникать, если во множестве атрибутов, на которое делается проекция, не вошел ни один потенциальный ключ исходного отношения.

    Соединение Определены две разновидности операции соединение: естественное соединение и -соединение. Пусть отношения А и В имеют заголовки {X,Y} и {Y,Z}, где атрибуты X,Y,Z могут быть составными. Иными словами, только атрибут Y (или подмножество атрибутов, обозначаемое Y) присутствует как в первом, так и во втором отношении. Атрибуты с одинаковыми именами определены на одних доменах. Тогда естественным соединением отношений А и В называется отношение с заголовком {X,Y,Z,} и телом, содержащим все кортежи {X:x,Y:y,Z:z}, для которых в отношении А значение атрибута X равно х, значение атрибута Y - у, а в отношении В значение атрибута Y равно у, атрибута Z - z.

    Обозначается естественное соединение А и В, как A JOIN В. Если отношения А и В не имеют общих имен атрибутов, то их естественное соединение эквивалентно декартовому произведению.

    В табл. 4.14-4.16 приводится пример естественного соединения двух реляционных отношений.



    Из-за того, что в первом отношении (табл. 4.14) нет кортежей со значением атрибута «Группа» равным «384», а во втором отношении (табл. 4.15) нет кортежей со значением того же атрибута «383», в результирующем отношении остались только кортежи, содержащие данные о студентах группы «382». Из требований уникальности и неизбыточности для первичного ключа следует, что в результирующем отношении первичный ключ – {StudID} . Пусть отношения А и В не имеют общих атрибутов, и оператор определяется также как в выборке (т. е. оператор сравнения). Тогда в-соединением отношения А по атрибуту X с отношением В по атрибуту Y называется отношение с тем же заголовком, что и при декартовом произведении отношений А и В, и с телом, содержащим множество Т всех кортежей, таких что любой кортеж tєT принадлежит декартовому произведению А и В, и вычисление для него условия «X Y» дает значение «истина».

    Также как и в случае выборки, X и Y должны быть определены на одном и том же домене, а операция должна иметь смысл для этого домена.

    На самом деле, -соединение эквивалентно нахождению декартова произведения двух отношений и последующей -выборке, произведенной над результатом. Могут использоваться два варианта записи этой операции:

    А [X Y] В

    (A TIMES В) WHERE X Y

    Рассмотрим пример. Пусть отношение А содержит информацию о цене приборов (табл. 4.17), а отношение В - о цене подставок для приборов (табл. 4.18). Необходимо получить те комбинации приборов, подставок и цен на них, где подставка не дороже прибора. Это можно сделать с помощью операции -соединения по условию «Цена прибора > Цена подставки».





    Деление Пусть отношения А и В имеют заголовки {X, У} и {У} соответственно, атрибуты X и У могут быть составными. Одинаково названные атрибуты двух отношений определены на одних и тех же доменах. Результатом деления отношения А на В будет отношение с заголовком {X} и телом, содержащим множество всех кортежей {Х:х}, таких, что в А существует кортеж {Х:х,У:у}, для всех кортежей {У:у} из В. Обозначается эта операция как:

    А / В

    А DIVIDEBY В

    В табл. 4.20 приведено отношение А, содержащее информацию о том, какой студент сдавал какой предмет. Отношение В содержит список предметов (табл. 4.21). Необходимо получить список идентификаторов студентов, сдавших все перечисленные в таблице В предметы. Задача решается путем деления А на В (табл. 4.22).





    Рассмотрим пример задачи, для решения которой используется несколько реляционных операций. Нужно написать выражение, в результате выполнения которого из отношений STUDENTS (табл. 4.14) и GROUPS (табл. 4.15) будет получено отношение, содержащее данные о фамилии и инициалах студента и старосте его группы. Искомое выражение:

    (STUDENTS JOIN GROUPS)[ФИО, Староста]

    Пусть имеется реляционное отношение, которое содержит сле

    дующие данные о книжных изданиях (табл. 4.23):

    1) ID - внутренний идентификатор издания (первичный ключ);

    2) Title - название;

    3) Author - фамилия и инициалы автора (полагаем, что у одной книги только один автор и среди авторов однофамильцев с совпадающими инициалами нет);

    4) Publisher - издательство;

    5) Year - год издания. Рассмотрим несколько задач, иллюстрирующих применение операторов реляционной алгебры.



    Пусть нужно найти книги, изданные после 1999 года. Причем интересует вся информация о книге. Эта задача решается с помощью выборки.

    Res = Book[Year>1999]

    Если требуется перечень всех издательств, о которых имеется упоминание в нашей БД, то будем использовать проекцию.

    Res = Book[Publisher]

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

    Res = (Book[Author,Publisher])/(Book[Publisher])

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

    В = Book

    Res = (B[B.ID Ф Book.ID & В.Author = Book.Author & B.Year = Book.Year]Book)[B.Author]

    Следующая задача - получить список авторов, чьи книги ни разу не издавались в издательстве «Азбука». Часто при решении этой задачи делают ошибку, используя выборку по условию «Publisher» Ф «Азбука». Но это условие, с последующей проекцией, позволит выбрать авторов, которые хотя бы раз издавались в издательстве отличном от «Азбуки», т. е. в общем случае такое решение неверно. Правильное решение будет получено, если из множества всех авторов вычесть тех, кто издавался в «Азбуке».

    Resl = Book[Author]

    Res2 = (Book[Publisher = "Азбука"])[Author]

    Res = Resl \ Res2


    написать администратору сайта