Тема 3. Реляционная алгебра
3. Реляционная алгебра
3.1. Операции над таблицами (операции реляционной алгебры).
Над реляционными таблицами можно выполнять пять основных операций:
проекция,
селекция,
декартово произведение,
объединение,
разность.
Эти операции являются независимыми. Ни одну из них нельзя получить комбинацией четырех остальных. Помимо этих четырех операций в состав реляционной алгебры включают также операцию переименования полей и три зависимых операции:
соединение,
пересечение,
деление.
Таким образом, данная реляционная алгебра является избыточной. Однако общепринятый язык доступа к данным в реляционных базах SQL базируется именно на этой алгебре, которая носит имя британского ученого-математика Эдгара Кодда (1923-2003).
Проекция (projection, обозначается "π") – это унарная операция (выполняемая над одной таблицей), служащая для выбора подмножества полей из таблицы R. Результатом операции будет таблица с меньшим числом полей, а также, возможно, с меньшим числом записей за счет последующего исключения повторяющихся записей. Аргументами операции являются исходная таблица и подмножество ее полей, которое образует заголовок результирующей таблицы.
Пример проекции представлен на рис. 3.1.
Исходная таблица Т |
||||
Шифр |
Автор |
Название |
Год издания |
Число страниц |
И54 |
Иванов А.Б. |
Волоконная оптика |
1999 |
664 |
Д01 |
Шабалин С.А. |
Измерения для всех |
1991 |
560 |
И81 |
Иванов А.Б. |
Волоконная оптика |
2001 |
693 |
Проекция исходной таблицы П2 = π (Т, {Автор, Название}) |
|
Автор |
Название |
Иванов А.Б. |
Волоконная оптика |
Шабалин С.А. |
Измерения для всех |
Рис. 3.1. Пример применения к таблице Т операции «проекция».
Селекция (selection, обозначается "σ") – это унарная операция, результатом которой является подмножество записей исходной таблицы, удовлетворяющих условиям, которые накладываются на значения определённых полей.
На рис. 3.2 приведены примеры селекции записей из таблицы Т, представленной на рис. 3.1.
Селекция из исходной таблицы С1 = σ (Т, {Год издания < 2000}) - книги, изданные до 2000 г. |
||||
Шифр |
Автор |
Название |
Год издания |
Число страниц |
И54 |
Иванов А.Б. |
Волоконная оптика |
1999 |
664 |
Д01 |
Шабалин С.А. |
Измерения для всех |
1991 |
560 |
Селекция из исходной таблицы С2 = σ (Т, {Автор = “Иванов А.Б.” И Год издания < 2000}) – книги Иванова А.Б., изданные до 2000 года |
||||
Шифр |
Автор |
Название |
Год издания |
Число страниц |
И54 |
Иванов А.Б. |
Волоконная оптика |
1999 |
664 |
Рис. 3.2. Примеры селекции записей из таблицы
Декартово произведение таблиц (cartesian product, обозначается "×")— это бинарная операция, результатом которой, является таблица, заголовок которой является сцеплением заголовков двух исходных таблиц и состоящая из записей, составленных из сцепленных записей исходных таблиц (рис. 3.3). Исходные таблицы не должны иметь одинаковых полей.
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
|
Рис. 3.3. Декартово произведение таблиц
Объединение (union, обозначается "U") – это бинарная операция, которую можно производить над таблицами, имеющими одинаковые заголовки, результатом которой является таблица, включающая все записи обеих таблиц без повторов.
|
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
|||||||||||||||||||||
|
Рис. 3.4. Объединение таблиц.
Разность (set difference, обозначается "–") – это бинарная операция, которую можно производить над таблицами Т1 и Т2, имеющими одинаковые заголовки, результатом которой является таблица Т1–Т2, включающая подмножество тех записей Т1, которых нет в таблице Т2.
|
|
||||||||||||||
|
|
Рис. 3.5. Разность таблиц, представленных на рис. 3.4.
Операции объединения и разности могут производиться только над таблицами, имеющими одинаковые заголовки. Часто возникают ситуации, когда поля двух таблиц имеют разные имена, но в остальном одинаковы. В этом случае их можно сделать одинаковыми с помощью операции переименования поля (rename). Аргументами этой операции является таблица, имя поля, которое подлежит переименованию, и его новое имя.
Соединение (join, обозначается " ") – это операция, аргументами которой в общем случае являются таблицы Т1 и Т2 и условие У, а результатом – таблица, заголовок которой является сцеплением заголовков двух исходных таблиц и состоящая из записей, удовлетворяющих условию У и составленных из сцепленных записей исходных таблиц. Соединение может быть получено сочетанием операций декартова произведения и селекции: Т1 Т2 = σУ (Т1 × Т2). Пример соединения представлен на рис. 3.6.
Важным частным случаем соединения является эквисоединение, когда условие У подразумевает равенство значений полей двух соединяемых таблиц (рис. 3.7).
|
|
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
|
Рис. 3.6. Соединение таблиц.
Расширением эквисоединения является естественное соединение таблиц, когда условие У подразумевает равенство значений одинаковых полей таблиц. Расширение заключается в том, что естественное соединение кроме операции эквисоединения подразумевает еще проекцию – исключение из заголовка результирующей таблицы дубликатов полей (рис. 3.8).
|
|
||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||
|
Рис. 3.7. Эквисоединение таблиц.
Пересечение (intersection, обозначается "∩") – это бинарная операция, которую можно производить над таблицами Т1 и Т2, имеющими одинаковые заголовки, результатом которой является таблица Т1 ∩ Т2, включающая все записи, имеющиеся и в таблице Т1 и в таблице Т2. Пересечение может быть получено сочетанием двух операций разности: Т1 ∩ Т2 = Т1 – (Т1 – Т2) = = Т2 – (Т2 – Т2). Пример пересечения показан на рис. 3.9.
|
|
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
|
Рис. 3.8. Отличие эквисоединение от естественного соединения таблиц.
Пересечение Т1 ∩ Т2 – студенты, изучающие и физику и химию |
|
Студент |
Группа |
Петров П.П. |
М-01 |
Сергеев С.С. |
М-02 |
Рис. 3.9. Пересечение таблиц Т1 и Т2, представленных на рис. 3.4.
Деление (division, обозначается "/") – бинарная операция, в некотором смысле обратная декартову произведению. Поэтому операцию можно производить над таблицами, имеющими такие заголовки, что заголовок делителя является частью заголовка делимого. Результатом деления таблица, состоящая из тех записей, декартово произведение которых с делителем входит в делимое (рис. 3.10).
Обратите внимание, что декартово произведение частого и делителя НЕ всегда позволяет получить делимое. Поэтому операция деления не всегда совершенно обратна декартову произведению. Случай, показанный на рис. 3.10, соответствует так называемому делению с остатком. Если декартово произведение частого и делителя дает делимое (в таблице-делимом нет «лишних» значений), то имеет место точное реляционное деление.
Деление можно выразить через операции декартова произведения, разности и проекции: Т1 / Т2 = πЗТ1 ∩ ЗТ2 (Т1 – ((Т1 × Т2) – Т1)). ЗТ1 ∩ ЗТ2 – отбираются те поля Т1, которых нет в Т2