Реляционная алгебра { Лекция 6 План: 1. 2. Традиционные операции реляционной алгебры Специальные операции реляционной алгебры С точки зрения внешнего представления объектов реального мира модель данных — это основные понятия и способы, используемые при анализе и описании предметной области. Среди многих попыток представить обработку данных на формальном абстрактном уровне реляционная модель, предложенная Э. Ф. Коддом, стала по существу первой работоспособной моделью данных, поскольку помимо средств описания объектов имела эффективный инструментарий преобразований этих описаний — операции реляционной алгебры. Реляционная алгебра в том виде, в котором она была определена Э. Ф. Коддом, состоит из двух групп по четыре оператора. 1. Традиционные операции: объединение, пересечение, разность и декартово произведение. 2. Специальные реляционные операции: выборка, проекция, соединение, деление. Объединение Объединением двух совместимых по типу отношений А и В называется отношение с тем же заголовком, что и у отношений А и В , и телом, состоящим из кортежей, принадлежащих или А, или В, или обоим отношениям. Синтаксис операции объединения: A UNION B Замечание. Объединение, как и любое отношение, не может содержать одинаковых кортежей. Поэтому, если некоторый кортеж входит и в отношение , и отношение , то в объединение он входит один раз. Пример 1. Пусть даны два отношения и с информацией о сотрудниках: Объединение отношений и будет иметь вид: Замечание. Как видно из приведенного примера, потенциальные ключи, которые были в отношениях и не наследуются объединением этих отношений. Поэтому, в объединении отношений и атрибут "Табельный номер" может содержать дубликаты значений. Если бы это было не так, и ключи наследовались бы, то это противоречило бы понятию объединения как "объединение множеств". Конечно, объединение отношений и имеет, как и любое отношение, потенциальный ключ, например, состоящий из всех атрибутов. 1. Пусть даны следующие соотношения: Результат объединения: Эквивалентный SQL-запрос: SELECT Имя, Возраст, Вес FROM Персоны UNION SELECT Имя, Возраст, Вес FROM Персонажи Пересечение Пересечением двух совместимых по типу отношений А и В называется отношение с тем же заголовком, что и у отношений А и В, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям А и В. Синтаксис операции пересечения: A INTERSECT B Пример 2. Для отношений A и B найти пересечение Результат пересечения Эквивалентный SQL-запрос: SELECT Имя, Возраст, Вес FROM Персоны INTERSECT SELECT Имя, Возраст, Вес FROM Персонажи Вычитание Вычитанием двух совместимых по типу отношений А и В называется отношение с тем же заголовком, что и у отношений А и В, и телом, состоящим из кортежей, принадлежащих отношению А и не принадлежащих отношению В. Синтаксис операции вычитания: A MINUS B Пример 3. Для отношений A и B, найти вычитание Результат разности: Эквивалентный SQL-запрос: SELECT Имя, Возраст, Вес FROM Персоны EXCEPT SELECT Имя, Возраст, Вес FROM Персонажи Декартово произведение Декартовым произведением двух отношений и называется отношение, заголовок которого является сцеплением заголовков отношений, а тело состоит из кортежей, являющихся сцеплением кортежей отношений. Синтаксис операции декартового произведения: A TIMES B Пример 4. Пусть даны два отношения A и B с информацией о поставщиках и деталях: Декартово произведение отношений и будет иметь вид: Результат произведения: Эквивалентный SQL-запрос: SELECT * FROM Мультфильмы, Каналы Специальные реляционные операторы Выборка возвращает таблицу, содержащую все записи из заданной таблицы, которые удовлетворяют указанным условиям C. Условие C представляет собой логическое выражение, в которое могут входить атрибуты отношения и (или) скалярные выражения. Синтаксис операции выборки: A WHERE C Пример 5. Пусть дано отношение с информацией о сотрудниках: Получить таблицы: 1) Возраст ≥ 34 2) Возраст = Вес Эквивалентный SQL-запрос: SELECT * FROM Персоны WHERE Возраст >= 34 Эквивалентный SQL-запрос: SELECT * FROM Персоны WHERE Возраст = Вес Проекция возвращает таблицу, содержащую все записи заданной таблицы, которые остались в этой таблице после исключения из неё некоторых атрибутов. Пример 6. Пусть дано отношение с информацией о поставщиках, включающих наименование и месторасположение: Пусть даны следующие соотношения: Найти проекцию Возраст, Вес из (Персоны) Эквивалентный SQL-запрос: SELECT DISTINCT Возраст, Вес FROM Персоны Операция соединения отношений, наряду с операциями выборки и проекции, является одной из наиболее важных реляционных операций. Обычно рассматривается несколько разновидностей операции соединения: Общая операция соединения Тэта-соединение Экви-соединение Естественное соединение Наиболее важным из этих частных случаев является операция естественного соединения. Все разновидности соединения являются частными случаями общей операции соединения. Соединение Операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать. Соединим их с выборкой Название_канала = Код_канала(Произведение) Первый этап, произведение: Второй этап, выборка Название_канала = Код_канала Эквивалентный SQL-запрос: SELECT * FROM Мультфильмы, Каналы WHERE Название_канала = Код_канала Деление Результирующее отношение содержит такие значения атрибутов Х отношения A, для которых соответствующие значения атрибута Y из A включают все значения атрибута Y из отношения B. Реляционное деление достаточно нетривиально описать, но на примере его смысл нагляден. В целом, из таблицы A берутся значения строк, для которых присутствуют все комбинации значений из таблицы B. Тогда при делении на таблицу каналов: Результатом будет: Family Guy и The Simpsons — мультфильмы, которые показывались и на RenTV и на 2x2 (условие во второй таблице). При этом Duck Talesне показывалось по RenTV, потому был исключён из результирующей таблицы. Результат выполнения любой операции над таблицами также является таблицей, поэтому результат одной операции может использоваться в качестве исходных данных для другой. Другими словами, можно записывать вложенные реляционные выражения, т. е. выражения, в которых операторы сами представлены реляционными выражениями, причем произвольной сложности. Эта особенность называется свойством реляционной замкнутости. Вопросы для самоконтроля: 1. 2. Сколько реляционных операций образуют реляционную алгебру? Перечислите и охарактеризуйте операции реляционной алгебры. Приведите примеры.