отношение в реляционной алгебре это
Реляционная алгебра, операции реляционной алгебры
Что такое реляционная алгебра
Операция выборки

Запрос SQL
Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. В таблице ниже дано одно отношение, с которым работает эта операция.
| R3 | |||
| A1 | A2 | A3 | A4 |
| 3 | hh | yl | ms |
| 4 | pp | a1 | sr |
| 1 | rr | yl | ms |
Просматриваем столбец А3 и устанавливаем, что предикату A3>’d0′ удовлетворяют записи в первой и третьей строках исходного отношения (так как номер буквы y в алфавите больше номера буквы d). В результате получаем следующее новое отношение, в котором две строки:
| R | |||
| A1 | A2 | A3 | A4 |
| 3 | hh | yl | ms |
| 1 | rr | yl | ms |
Комбинировать всевозможные логические условия для выборок Вам поможет материал «Булева алгебра (алгебра логики)».
А в материалах раздела «Программирование PHP/MySQL» Вы найдёт немало примеров комбинаций различных логических условий для выборок из базы данных.
Операция проекции
Запрос SQL
Пусть вновь дано то же отношение R3 :
| R3 | |||
| A1 | A2 | A3 | A4 |
| 3 | hh | yl | ms |
| 4 | pp | a1 | sr |
| 1 | rr | yl | ms |
| R | |
| A4 | A3 |
| ms | yl |
| sr | a1 |
Операция объединения
Результатом объединения двух множеств (отношений) А и В (
Запрос SQL
| R1 | R2 | ||||
| A1 | A2 | A3 | A1 | A2 | A3 |
| Z7 | aa | w11 | X8 | pp | k21 |
| B7 | hh | h15 | Q2 | ee | h15 |
| X8 | pp | w11 | X8 | pp | w11 |
| R | ||
| A1 | A2 | A3 |
| Z7 | aa | w11 |
| B7 | hh | h15 |
| X8 | pp | w11 |
| X8 | pp | k21 |
| Q2 | ee | h15 |
Важно следующее: операция объединения может быть выполнена только тогда, когда два отношения обладают одинаковым числом и названиями атрибутов (столбцов), или, говоря формально, совместимы по объединению.
Операция пересечения
Результатом пересечения двух множеств (отношений) А и В (
Запрос SQL
В некоторых диалектах SQL отсутствует ключевое слово INTERSECT. Поэтому, например, в MySQL и других, операция пересечения множеств может реализована с применением предиката EXISTS.
Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:
| R1 | R2 | ||||
| A1 | A2 | A3 | A1 | A2 | A3 |
| Z7 | aa | w11 | X8 | pp | k21 |
| B7 | hh | h15 | Q2 | ee | h15 |
| X8 | pp | w11 | X8 | pp | w11 |
| R | ||
| A1 | A2 | A3 |
| X8 | pp | w11 |
Операция разности
Разность двух отношений R1 и R2 (
Запрос SQL
Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:
| R1 | R2 | ||||
| A1 | A2 | A3 | A1 | A2 | A3 |
| Z7 | aa | w11 | X8 | pp | k21 |
| B7 | hh | h15 | Q2 | ee | h15 |
| X8 | pp | w11 | X8 | pp | w11 |
| R | ||
| A1 | A2 | A3 |
| X8 | pp | w11 |
| Q2 | ee | h15 |
В некоторых диалектах SQL отсутствует ключевое слово EXCEPT. Поэтому, например, в MySQL и других, операция пересечения множеств может реализована с применением предиката NOT EXISTS.
Операция декартова произведения
Операция декартова произведения (
Запрос SQL
Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4:
| R3 | R4 | ||||
| A1 | A2 | A3 | A4 | A5 | A6 |
| 3 | hh | yl | ms | 3 | hh |
| 4 | pp | a1 | sr | 4 | pp |
| 1 | rr | yl | ms | ||
В новом отношении должны присутствовать все атрибуты (столбцы) двух отношений. Сначала первая строка отношения R3 сцепляется с каждой из двух строк отношения R4, затем вторая строка отношения R3, затем третья. В результате должно получиться 3 Х 2 = 6 кортежей (строк). Получаем такое новое отношение:
| R | |||||
| A1 | A2 | A3 | A4 | A5 | A6 |
| 3 | hh | yl | ms | 3 | hh |
| 3 | hh | yl | ms | 4 | pp |
| 4 | pp | a1 | sr | 3 | hh |
| 4 | pp | a1 | sr | 4 | pp |
| 1 | rr | yl | ms | 3 | hh |
| 1 | rr | yl | ms | 4 | pp |
Операция деления
Результатом операции деления (
Запрос SQL
Давайте посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R5 и R6:
| R5 | R6 | ||||
| A1 | A2 | A3 | A4 | A2 | A3 |
| 2 | S3 | 4 | sun | R4 | 8 |
| 3 | X8 | 7 | kab | X8 | 7 |
| 3 | R4 | 8 | kab | ||
Комбинации всех кортежей отношения R6 соответствуют вторая и третья строки отношения R5. Но после исключения атрибутов (столбцов) А2 и А3 эти строки становятся идентичными. Поэтому в новом отношении присутствует эта строка один раз. Новое отношение:
Операция тета-соединения
Запрос SQL
Посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4:
| R3 | R4 | ||||
| A1 | A2 | A3 | A4 | A5 | A6 |
| 3 | hh | yl | ms | 3 | hh |
| 4 | pp | a1 | sr | 4 | pp |
| 1 | rr | yl | ms | ||
Отношение в реляционной алгебре это
Третья часть реляционной модели, манипуляционная часть, утверждает, что доступ к реляционным данным осуществляется при помощи реляционной алгебры или эквивалентного ему реляционного исчисления.
В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни реляционная алгебра, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SQL (Structured Query Language). Язык SQL представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении. Вообще, язык доступа к данным называется реляционно полным, если он по выразительной силе не уступает реляционной алгебре (или, что то же самое, реляционному исчислению), т.е. любой оператор реляционной алгебры может быть выражен средствами этого языка. Именно таким и является язык SQL.
В данной главе будут рассмотрены основы реляционной алгебры.
Замкнутость реляционной алгебры
Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Таким образом, реляционный оператор 
Реляционная алгебра является замкнутой, т.к. в качестве аргументов в реляционные операторы можно подставлять другие реляционные операторы, подходящие по типу:
Таким образом, в реляционных выражениях можно использовать вложенные выражения сколь угодно сложной структуры.
Каждое отношение обязано иметь уникальное имя в пределах базы данных. Имя отношения, полученного в результате выполнения реляционной операции, определяется в левой части равенства. Однако можно не требовать наличия имен от отношений, полученных в результате реляционных выражений, если эти отношения подставляются в качестве аргументов в другие реляционные выражения. Такие отношения будем называть неименованными отношениями. Неименованные отношения реально не существуют в базе данных, а только вычисляются в момент вычисления значения реляционного оператора.
Традиционно, вслед за Коддом [43], определяют восемь реляционных операторов, объединенных в две группы.
Не все они являются независимыми, т.е. некоторые из этих операторов могут быть выражены через другие реляционные операторы.
Отношения, совместимые по типу
Некоторые реляционные операторы (например, объединение) требуют, чтобы отношения имели одинаковые заголовки. Действительно, отношения состоят из заголовка и тела. Операция объединения двух отношений есть просто объединение двух множеств кортежей, взятых из тел соответствующих отношений. Но будет ли результат отношением? Во-первых, если исходные отношения имеют разное количество атрибутов, то, очевидно, что множество, являющееся объединением таких разнотипных кортежей нельзя представить в виде отношения. Во-вторых, пусть даже отношения имеют одинаковое количество атрибутов, но атрибуты имеют различные наименования. Как тогда определить заголовок отношения, полученного в результате объединения множеств кортежей? В-третьих, пусть отношения имеют одинаковое количество атрибутов, атрибуты имеют одинаковые наименования, но определенны на различных доменах. Тогда снова объединение кортежей не будет образовывать отношение.
Некоторые отношения не являются совместимыми по типу, но становятся таковыми после некоторого переименования атрибутов. Для того чтобы такие отношения можно было использовать в реляционных операторах, вводится вспомогательный оператор переименования атрибутов.
Оператор переименования атрибутов
Оператор переименования атрибутов имеет следующий синтаксис:



В результате применения оператора переименования атрибутов получаем новое отношение, с измененными именами атрибутов.
Следующий оператор возвращает неименованное отношение, в котором атрибут 

Теоретико-множественные операторы
Объединение
Определение 2. Объединением двух совместимых по типу отношений 





Синтаксис операции объединения:
Замечание. Объединение, как и любое отношение, не может содержать одинаковых кортежей. Поэтому, если некоторый кортеж входит и в отношение 

Пример 2. Пусть даны два отношения 

| Табельный номер | Фамилия | Зарплата |
|---|---|---|
| 1 | Иванов | 1000 |
| 2 | Петров | 2000 |
| 3 | Сидоров | 3000 |
Таблица 1 Отношение A
| Табельный номер | Фамилия | Зарплата |
|---|---|---|
| 1 | Иванов | 1000 |
| 2 | Пушников | 2500 |
| 4 | Сидоров | 3000 |
Таблица 2 Отношение B
Объединение отношений 

| Табельный номер | Фамилия | Зарплата |
|---|---|---|
| 1 | Иванов | 1000 |
| 2 | Петров | 2000 |
| 3 | Сидоров | 3000 |
| 2 | Пушников | 2500 |
| 4 | Сидоров | 3000 |
Таблица 3 Отношение A UNION B
Замечание. Как видно из приведенного примера, потенциальные ключи, которые были в отношениях 





Пересечение
Определение 3. Пересечением двух совместимых по типу отношений 





Синтаксис операции пересечения:
Пример 3. Для тех же отношений 

| Табельный номер | Фамилия | Зарплата |
|---|---|---|
| 1 | Иванов | 1000 |
Таблица 4 Отношение A INTERSECT B
Вычитание
Определение 4. Вычитанием двух совместимых по типу отношений 





Синтаксис операции вычитания:
Пример 4. Для тех же отношений 

| Табельный номер | Фамилия | Зарплата |
|---|---|---|
| 2 | Петров | 2000 |
| 3 | Сидоров | 3000 |
Таблица 5 Отношение A MINUS B
Декартово произведение
Определение 5. Декартовым произведением двух отношений 




а тело состоит из кортежей, являющихся сцеплением кортежей отношений 


таких, что 

Синтаксис операции декартового произведения:
Замечание. Мощность произведения 




Замечание. Если в отношения 

Замечание. Перемножать можно любые два отношения, совместимость по типу при этом не требуется.
Пример 5. Пусть даны два отношения 

| Номер поставщика | Наименование поставщика |
|---|---|
| 1 | Иванов |
| 2 | Петров |
| 3 | Сидоров |
Таблица 6 Отношение A (Поставщики)
| Номер детали | Наименование детали |
|---|---|
| 1 | Болт |
| 2 | Гайка |
| 3 | Винт |
Таблица 7 Отношение B (Детали)
Декартово произведение отношений 

| Номер поставщика | Наименование поставщика | Номер детали | Наименование детали |
|---|---|---|---|
| 1 | Иванов | 1 | Болт |
| 1 | Иванов | 2 | Гайка |
| 1 | Иванов | 3 | Винт |
| 2 | Петров | 1 | Болт |
| 2 | Петров | 2 | Гайка |
| 2 | Петров | 3 | Винт |
| 3 | Сидоров | 1 | Болт |
| 3 | Сидоров | 2 | Гайка |
| 3 | Сидоров | 3 | Винт |
Таблица 8 Отношение A TIMES B
Замечание. Сама по себе операция декартового произведения не очень важна, т.к. она не дает никакой новой информации, по сравнению с исходными отношениями. Для реальных запросов эта операция почти никогда не используется. Однако операция декартового произведения важна для выполнения специальных реляционных операций, о которых речь пойдет ниже.
Специальные реляционные операторы
Выборка (ограничение, селекция)
Определение 6. Выборкой (ограничением, селекцией) на отношении 





В простейшем случае условие 









Синтаксис операции выборки:

Пример 6. Пусть дано отношение 
| Табельный номер | Фамилия | Зарплата |
|---|---|---|
| 1 | Иванов | 1000 |
| 2 | Петров | 2000 |
| 3 | Сидоров | 3000 |
Таблица 9 Отношение A
Результат выборки 
| Табельный номер | Фамилия | Зарплата |
|---|---|---|
| 1 | Иванов | 1000 |
| 2 | Петров | 2000 |
| НОМ_ВЕЩЕСТВА | ВЕЩЕСТВО |
|---|---|
| 1 | Дезоксирибонуклеиновая кислота |
| 2 | Бензин |
Таблица 25 Отношение ВЕЩЕСТВО
| НОМ_ЭЛЕМЕНТА | ЭЛЕМЕНТ |
|---|---|
| 1 | Водород |
| 2 | Гелий |
| … | … |
| 105 | … |
Таблица 26 Отношение ЭЛЕМЕНТЫ
| НОМ_ВЕЩЕСТВА | НОМ_ЭЛЕМЕНТА | ПРОЦЕНТ |
|---|---|---|
| 1 | 1 | 5 |
| 1 | 2 | 3 |
| 1 | 105 | 0.01 |
| 2 | 1 | 50 |
Таблица 27 Отношение ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ
На языке SQL такой запрос реализуется одной командой:
Невыразимость транзитивного замыкания реляционными операторами
Следующий пример иллюстрирует класс запросов, невыразимых средствами реляционной алгебры или реляционного исчисления по причине невыразимости средствами реляционной алгебры транзитивного замыкания отношений (см. гл. 1).
Пример 17. Рассмотрим отношение, описывающее сотрудников некоего предприятия. Отношение содержит данные о табельном номере сотрудника, фамилии, должности и табельном номере руководителя сотрудника – СОТРУДНИКИ ( ТАБ_НОМ, ФАМИЛИЯ, ДОЛЖНОСТЬ, ТАБ_НОМ_РУК):
| ТАБ_НОМ | ФАМИЛИЯ | ДОЛЖНОСТЬ | ТАБ_НОМ_РУК |
|---|---|---|---|
| 1 | Иванов | Директор | 1 |
| 2 | Петров | Глав.бухгалтер | 1 |
| 3 | Сидоров | Бухгалтер | 2 |
| 4 | Васильев | Начальник цеха | 1 |
| 5 | Сухов | Мастер | 4 |
| 6 | Шарипов | Рабочий | 5 |
| … | … | … | … |
Таблица 28 Отношение СОТРУДНИКИ
Рассмотрим запрос «Перечислить всех руководителей (прямых и непрямых) данного сотрудника».
Ответом на запрос может быть получен при помощи понятия транзитивного замыкания. Однако транзитивное замыкание не может быть выражено операторами реляционной алгебры.
Кросс-таблицы
Одной из задач, связанных с представлением табличных данных является построение так называемых кросс-таблиц.
Пусть имеется отношение с тремя атрибутами и потенциальным ключом, включающим первые два атрибута. Примером такого отношения могут быть данные с объемами продаж различных товаров за некоторые промежутки времени:
| Товар | Месяц | Количество |
|---|---|---|
| Компьютеры | Январь | 100 |
| Принтеры | Январь | 200 |
| Сканеры | Январь | 300 |
| Компьютеры | Февраль | 150 |
| Принтеры | Февраль | 250 |
| Сканеры | Февраль | 350 |
| … | … | … |
Таблица 29 Данные о продажах
| Товар | Январь | Февраль | … |
|---|---|---|---|
| Компьютеры | 100 | 150 | … |
| Принтеры | 200 | 250 | … |
| Сканеры | 300 | 350 | … |
Таблица 30 Кросс-таблица
Построение кросс-таблицы средствами реляционной алгебры невозможно, т.к. для этого требуется превратить данные в ячейках таблицы в наименования новых столбцов таблицы.
Выводы
Доступ к реляционным данным возможен при помощи операторов реляционной алгебры. Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Реляционная алгебра замкнута таким образом, что результаты одних реляционных выражений можно использовать в других выражениях.
Традиционно определяют восемь реляционных операторов, объединенных в две группы.
Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение.
Специальные реляционные операторы: выборка, проекция, соединение, деление.
Для выполнения некоторых реляционных операторов требуется, чтобы отношения были совместимы по типу.
Имеется несколько типов запросов, которые нельзя выразить средствами реляционной алгебры. К ним относятся запросы, требующие дать в ответе список атрибутов, удовлетворяющих определенным условиям, построение транзитивного замыкания отношений, построение кросс-таблиц. Для получения ответов на подобные запросы приходится использовать процедурные расширения реляционных языков.







