Декартово произведение: для заданных конечных множеств D1, D2, …, DN (не обязательно различных) декартовым (прямым) произведением D1 × D2 ×…× DN называется множество наборов:
{d1, d2, …, dN}, где d1 D1, d2 D2, …, dN DN1
Например, если даны два множества A = {a1, a2, a3} и B= {b1, b2} их декартово произведение будет иметь вид A= A × B = {{a1, b1}, {a1, b2}, {a2, b1}, {a2, b2}, {a3, b1}, {a3, b2}}.
Отношение: отношением R, определенным на множествах D1, D2, …, DN, называется подмножество декартова произведения D1 × D2 × … × DN . При этом:
Множества D1, D2, … DN называются доменами отношения;
элементы декартова произведения {d1, d2, …, dN}называются кортежами;
число N определяет степень отношения (N= 1 — унарное, N=2 — бинарное, ..., N-арное).
Количество кортежей называется мощностью отношения. На множестве С из предыдущего примера могут быть определены отношения R1 = {{a1, b2}, {a3,b2}} или R2 = {{a1, b1}, {a2, b1}, {a1, b2}}
Операторы. Реляционная алгебра в том виде, в котором она была определена Э. Ф. Коддом, состоит из двух групп по четыре оператора:
Традиционные операции над множествами (но модифицированные с учетом того, что их операндами являются отношения, а не произвольные множества): объединение, пересечение, разность и декартово произведение;
Специальные реляционные операции: выборка, проекция, соединение, деление.
Рассмотрим подробнее операции реляционной алгебры.
Объединение возвращает отношение, содержащее все кортежи, которые принадлежат либо одному из двух заданных отношений, либо им обоим (рис. 2.7).
Рис. 2.7. Объединение отношений
Рис. 2.8. Пересечение отношений
Пересечение возвращает отношение, содержащее все кортежи, которые принадлежат одновременно двум заданным отношениям (рис. 2.8).
Разность возвращает отношение, содержащее все кортежи, которые принадлежат первому из двух заданных отношений и не принадлежат второму (рис. 2.9).
Рис. 2.9. Разность отношений
Рис. 2.10. Произведение отношений
Произведение (декартово) возвращает отношение, содержащее все возможные кортежи, которые являются сочетанием двух кортежей, принадлежащих соответственно двум заданным отношениям (рис. 2.10).
Выборка (селекция) возвращает отношение, содержащее все кортежи из заданного отношения, которые удовлетворяют указанным условиям (рис. 2.11).
Рис. 2.11. Выборка (селекция) отношения
Рис. 2.12. Проекция отношения
Проекция возвращает отношение, содержащее все кортежи (подкортежи) заданного отношения, которые остались в этом отношении после исключения из него некоторых атрибутов (рис. 2.12).
Соединение возвращает отношение (рис. 2.13), содержащее все возможные кортежи, которые представляют собой комбинацию атрибутов двух кортежей, принадлежащих двум заданным, при условии, что в этих двух комбинированных кортежах присутствуют одинаковые значения в одном или нескольких общих для исходных отношений атрибутах (причем эти общие значения в результирующем кортеже появляются 1 раз, а не дважды).
Рис. 2.13. Соединение отношений
Деление для заданных двух унарных отношений и одного бинарного возвращает отношение, содержащее все кортежи из первого унарного отношения, которые содержатся также в бинарном отношении и соответствуют всем кортежам во втором унарном отношении (рис. 2.14).
Результат выполнения любой операции над отношением так же является отношением, поэтому результат одной операции может использоваться в качестве исходных данных для другой. Другими словами, можно записывать вложенные реляционные выражения, т. е. выражения, в которых операторы сами представлены реляционными выражениями, причем произвольной сложности. Эта особенность называется свойством реляционной замкнутости.
Рис. 2.14. Деление отношений
Важно, что отношение имеет две части — заголовок и тело. Нестрого говоря, заголовок — это атрибуты, а тело — это кортежи. Заголовок для базового отношения, т. е. значение базовой переменной-отношения, очевидно, вполне конкретен и известен системе, поскольку он задается как часть определения соответствующей базовой переменной отношения. Поскольку результирующее отношение обязательно должно иметь вполне определенный тип, то, если рассматривать свойство реляционной замкнутости более строго, каждая реляционная операция должна быть определена таким образом, чтобы выдавать результат с надлежащим типом отношения (в частности, с соответствующим набором имен атрибутов или заголовком).
Реляционная алгебра имеет набор правил вывода типов (отношений), позволяющих вывести тип (отношение) на выходе произвольной реляционной операции, зная типы (отношения) на входе этой операции. Задав такие правила для всех операций, можно гарантировать, что для реляционного выражения любой сложности будет вычисляться результат, имеющий вполне определенный тип (отношение) и, в частности, известный набор имен атрибутов.
Рассмотренные восемь операторов Кодда не являются минимальным набором, так как не все из них примитивны, т. е. часть из них можно определить через другие операторы. Действительно, операции соединения, пересечения и деления можно определить через остальные пять. Эти пять операций (выборка, проекция, произведение, объединение и разность) можно рассматривать как примитивные в том смысле, что ни одна из них не выражается через другие. Они образуют минимальный набор, но тем не менее не обязательно единственно возможный. Кроме того, остальные три операции (в особенности операция соединения) на практике используются настолько часто, что, несмотря на то что они не являются примитивными, имеет смысл обеспечить их непосредственную поддержку.
Предшествующее рассмотрение алгебры представлено в контексте только операций выборки данных. Однако, как отмечается в классических введениях к реляционной алгебре, ее основная цель — обеспечить запись реляционных выражений, позволяющих определять:
области выборки, т.е. тех данных, которые должны быть доставлены в результате выполнения операции выборки;
области обновления, т.е. данных, которые должны быть вставлены, изменены или удалены в результате выполнения операции обновления;
правила поддержки целостности данных, т. е. некоторых особых требований, которым должна удовлетворять база данных;
производные переменные-отношения, т.е. те данные, которые должны быть включены в представления базы данных;
требования устойчивости, т. е. данные, которые должны быть включены в контролируемую область для некоторых операций управления параллельным доступом к информации;
ограничения защиты, т. е. данные, для которых осуществляется тот или иной тип контроля доступа.
В целом выражения реляционной алгебры служат для символического высокоуровневого представления намерений пользователя (например, в отношении некоторого определенного запроса). И именно потому, что подобные выражения являются символическими и высокоуровневыми, ими можно манипулировать в соответствии с различными высокоуровневыми правилами преобразования, в том числе и для оптимизации процедур выполнения запросов на данные.
Достарыңызбен бөлісу: |