МИГКУ ИТ-51вс
Метки
Добавить страницу
Реляционная алгебра — формальная система манипулирования отношениями в реляционной модели данных. [1]
Выборка
Операция выборки — унарный оператор, записываемый как σaθb(R) или σaθv(R), где:
Выборка σaθb(R) (или σaθv(R)) выбирает все наборы значений R, для которых функция a θ b (или a θ v) будет истинна.
Пример
Пусть даны следующие соотношения:
| Имя | Возраст | Вес |
|---|---|---|
| Harry | 34 | 80 |
| Sally | 28 | 64 |
| George | 29 | 70 |
| Helena | 54 | 54 |
| Peter | 34 | 80 |
Тогда результаты выборок будут следующими:
| Имя | Возраст | Вес |
|---|---|---|
| Harry | 34 | 80 |
| Helena | 54 | 54 |
| Peter | 34 | 80 |
| Имя | Возраст | Вес |
|---|---|---|
| Helena | 54 | 54 |
Проекция
Операция выборки — унарный оператор, записываемый как πa1,…,an(R) где a1,…,an — спиоск полей, подлежащих выборке. Результатом такой выборки будет набор последовательностей значений отношения R, в котором будут присутствовать только поля, перечисленные в списке a1,…,an с естественным уничтожением потенциально возникающих кортежей-дубликатов[4].
Пример
Пусть даны следующие соотношения:
| Имя | Возраст | Вес |
|---|---|---|
| Harry | 34 | 80 |
| Sally | 28 | 64 |
| George | 29 | 70 |
| Helena | 54 | 54 |
| Peter | 34 | 80 |
| Возраст | Вес |
|---|---|
| 28 | 64 |
| 29 | 70 |
| 54 | 54 |
| 34 | 80 |
Объединение
Результатом объединения отношений A и B будет отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям.
Пример
Пусть даны следующие соотношения:
| Имя | Возраст | Вес |
|---|---|---|
| Harry | 34 | 80 |
| Sally | 28 | 64 |
| George | 29 | 70 |
| Helena | 54 | 54 |
| Peter | 34 | 80 |
| Имя | Возраст | Вес |
|---|---|---|
| Daffy | 24 | 19 |
| Donald | 25 | 23 |
| Scrooge | 81 | 27 |
| Имя | Возраст | Вес |
|---|---|---|
| Harry | 34 | 80 |
| Sally | 28 | 64 |
| George | 29 | 70 |
| Helena | 54 | 54 |
| Peter | 34 | 80 |
| Daffy | 24 | 19 |
| Donald | 25 | 23 |
| Scrooge | 81 | 27 |
Пересечение
Результатом пересечения отношений A и B будет отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A и B.
Пример
Пусть даны следующие соотношения:
| Имя | Возраст | Вес |
|---|---|---|
| Harry | 34 | 80 |
| Sally | 28 | 64 |
| George | 29 | 70 |
| Helena | 54 | 54 |
| Peter | 34 | 80 |
| Имя | Возраст | Вес |
|---|---|---|
| Daffy | 24 | 19 |
| George | 29 | 70 |
| Donald | 25 | 23 |
| Scrooge | 81 | 27 |
| Sally | 28 | 64 |
| Имя | Возраст | Вес |
|---|---|---|
| George | 29 | 70 |
| Sally | 28 | 64 |
Разность
Результатом разности отношений A и B будет отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и не принадлежащих отношению B.
Пример
Пусть даны следующие соотношения:
| Имя | Возраст | Вес |
|---|---|---|
| Harry | 34 | 80 |
| Sally | 28 | 64 |
| George | 29 | 70 |
| Helena | 54 | 54 |
| Peter | 34 | 80 |
| Имя | Возраст | Вес |
|---|---|---|
| Daffy | 24 | 19 |
| George | 29 | 70 |
| Donald | 25 | 23 |
| Scrooge | 81 | 27 |
| Sally | 28 | 64 |
| Имя | Возраст | Вес |
|---|---|---|
| Harry | 34 | 80 |
| Helena | 54 | 54 |
| Peter | 34 | 80 |
Произведение
При выполнении прямого произведения двух отношений производится отношение, кортежи которого являются конкатенацией (сцеплением) кортежей первого и второго операндов.
Пример
Пусть даны следующие соотношения:
| Код_мульта | Название_мульта |
|---|---|
| 0 | The Simpsons |
| 1 | Family Guy |
| 2 | Duck Tales |
| Код_канала | Название_канала |
|---|---|
| 0 | СТС |
| 1 | 2х2 |
| Код_мульта | Название_мульта | Код_канала | Название_канала |
|---|---|---|---|
| 0 | The Simpsons | 0 | СТС |
| 0 | The Simpsons | 1 | 2х2 |
| 1 | Family Guy | 0 | СТС |
| 1 | Family Guy | 1 | 2х2 |
| 2 | Duck Tales | 0 | СТС |
| 2 | Duck Tales | 1 | 2х2 |
Деление
Реляционное деление достаточно нетривиально описать, но на примере его смысл нагляден. В целом, из таблицы A берутся значения строк, для которых присутствуют все комбинации значений из таблицы B. Понятно? Ну, примерно об этом я и пытался сказать, смотрим пример:
Пример
Пусть даны следующие соотношения:
| Код_мульта | Название_мульта | Название_канала |
|---|---|---|
| 0 | The Simpsons | RenTV |
| 0 | The Simpsons | 2х2 |
| 0 | The Simpsons | CTC |
| 1 | Family Guy | RenTV |
| 1 | Family Guy | 2х2 |
| 2 | Duck Tales | СТС |
| 2 | Duck Tales | 2×2 |
Тогда при делении на таблицу каналов:
| Название_канала |
|---|
| RenTV |
| 2х2 |
| Код_мульта | Название_мульта |
|---|---|
| 0 | The Simpsons |
| 1 | Family Guy |
Family Guy и The Simpsons — мультфильмы, которые показывались и на RenTV и на 2×2 (условие во второй таблице). При этом Duck Tales не показывалось по RenTV, потому был исключён из результирующей таблицы.
Эквивалентный SQL-запрос привести затрудняюсь
Соединение
Операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.[4]
Пример
| Код_мульта | Название_мульта | Название_канала |
|---|---|---|
| 0 | The Simpsons | 2х2 |
| 1 | Family Guy | 2х2 |
| 2 | Duck Tales | RenTV |
| Код_канала | Частота |
|---|---|
| RenTV | 3,1415 |
| 2х2 | 783,25 |
Соединим их с выборкой σНазвание_канала = Код_канала(Произведение)
Первый этап, произведение:
| Код_мульта | Название_мульта | Название_канала | Код_канала | Частота |
|---|---|---|---|---|
| 0 | The Simpsons | 2х2 | RenTV | 3,1415 |
| 0 | The Simpsons | 2х2 | 2х2 | 783,25 |
| 1 | Family Guy | 2х2 | RenTV | 3,1415 |
| 1 | Family Guy | 2х2 | 2х2 | 783,25 |
| 2 | Duck Tales | RenTV | RenTV | 3,1415 |
| 2 | Duck Tales | RenTV | 2х2 | 783,25 |
Второй этап, выборка σНазвание_канала = Код_канала(Произведение):
Основы реляционной алгебры
Реляционная алгебра базируется на теории множеств и является основой логики работы баз данных.
Когда я только изучал устройство баз данных и SQL, предварительное ознакомление с реляционной алгеброй очень помогло дальнейшим знаниям правильно уложиться в голове, и я постараюсь что бы эта статья произвела подобный эффект.
Так что если вы собираетесь начать свое обучение в этой области или вам просто стало интересно, прошу под кат.
Реляционная база данных
Для начала введем понятие реляцинной базы данных, в которой будем выполнять все действия.
Реляционной базой данных называется совокупность отношений, содержащих всю информацию, которая должна хранится в базе. В данном определении нам интересен термин отношение, но пока оставим его без строго определения.
Лучше представим себе таблицу продуктов.
таблица PRODUCTS
| ID | NAME | COMPANY | PRICE |
| 123 | Печеньки | ООО ”Темная сторона” | 190 |
| 156 | Чай | ООО ”Темная сторона” | 60 |
| 235 | Ананасы | ОАО ”Фрукты” | 100 |
| 623 | Томаты | ООО ”Овощи” | 130 |
Таблица состоит из 4х строк, строка в таблице является кортежем в реляционной теории. Множество упорядоченных кортежей называется отношением.
Перед тем как дать определение отношения, введем еще один термин — домен. Домены применительно к таблице это столбцы.
Для ясности, теперь введем строгое определение отношения.
Ключи в отношениях
В отношении требованием является то, что все кортежи должны различаться. Для однозначной идентификации кортежа существует первичный ключ. Первичный ключ это атрибут или набор из минимального числа атрибутов, который однозначно идентифицирует конкретный кортеж и не содержит дополнительных атрибутов.
Подразумевается, что все атрибуты в первичном ключе должны быть необходимыми и достаточными для идентификации конкретного кортежа, и исключение любого из атрибутов в ключе сделает его недостаточным для идентификации.
Например, в такой таблице ключом будет сочетание атрибутов из первого и второго столбца.
| COMPANY | DRIVER |
| ООО ”Темная сторона” | Владимир |
| ООО ”Темная сторона” | Михаил |
| ОАО ”Фрукты” | Руслан |
| ООО ”Овощи” | Владимир |
Видно, что в организации может быть несколько водителей, и чтобы однозначно идентифицировать водителя необходимо и значение из столбца “Название организации” и из “Имя водителя”. Такой ключ называется составным.
В реляционной БД таблицы взаимосвязаны и соотносятся друг с другом как главные и подчиненные. Связь главной и подчиненнной таблицы осуществляется через первичный ключ (primary key) главной таблицы и внешний ключ ( foreign key ) подчиненной таблицы.
Внешний ключ это атрибут или набор атрибутов, который в главной таблице является первичным ключем.
Этой подготовительной теории будет достаточно для знакомства с основными операциями реляционной алгебры.
Операции реляционной алгебры
Для понимания важно запомнить, что результатом любой операции алгебры над отношениями является еще одно отношение, которое можно потом так же использовать в других операциях.
Создадим еще одну таблицу, которая нам пригодится в примерах.
| ID | SELLER |
| 123 | OOO “Дарт” |
| 156 | ОАО ”Ведро” |
| 235 | ЗАО “Овоще База” |
| 623 | ОАО ”Фирма” |
Условимся, что в этой таблице ID это внешний ключ, связанный с первичным ключом таблицы PRODUCTS.
Для начала рассмотрим самую простую операцию — имя отношения. Её результатом будет такое же отношение, то есть выполнив операцию PRODUCTS, мы получим копию отношения PRODUCTS.
Проекция
Проекция является операцией, при которой из отношения выделяются атрибуты только из указанных доменов, то есть из таблицы выбираются только нужные столбцы, при этом, если получится несколько одинаковых кортежей, то в результирующем отношении остается только по одному экземпляру подобного кортежа.
Для примера сделаем проекцию на таблице PRODUCTS выбрав из нее ID и PRICE.
Синтаксис операции:
π (ID, PRICE) PRODUCTS
В результате этой операции получим отношение:
| ID | PRICE |
| 123 | 190 |
| 156 | 60 |
| 235 | 100 |
| 623 | 130 |
Выборка
Выборка — это операция, которая выделяет множество строк в таблице, удовлетворяющих заданным условиям. Условием может быть любое логическое выражение.
Для примера сделаем выборку из таблицы с ценой больше 90.
Синтаксис операции:
σ (PRICE>90) PRODUCTS
| ID | NAME | COMPANY | PRICE |
| 123 | Печеньки | ООО ”Темная сторона” | 190 |
| 235 | Ананасы | ОАО ”Фрукты” | 100 |
| 623 | Томаты | ООО ”Овощи” | 130 |
В условии выборки мы можем использовать любое логическое выражение. Сделаем еще одну выборку с ценой больше 90 и ID товара меньше 300:
σ (PRICE>90 ^ ID π COMPANY σ (PRICE 123 Для примера использования этой операции представим себе необходимость выбрать продавцов с ценами меньше 90. Без произведения необходимо было бы сначала получить ID продуктов из первой таблицы, потом по этим ID из второй таблицы получить нужные имена SELLER, а с использованием произведения будет такой запрос: Запрос SQL Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. В таблице ниже дано одно отношение, с которым работает эта операция. Просматриваем столбец А3 и устанавливаем, что предикату A3>’d0′ удовлетворяют записи в первой и третьей строках исходного отношения (так как номер буквы y в алфавите больше номера буквы d). В результате получаем следующее новое отношение, в котором две строки: Комбинировать всевозможные логические условия для выборок Вам поможет материал «Булева алгебра (алгебра логики)». А в материалах раздела «Программирование PHP/MySQL» Вы найдёт немало примеров комбинаций различных логических условий для выборок из базы данных. Запрос SQL Пусть вновь дано то же отношение R3 : Результатом объединения двух множеств (отношений) А и В ( Запрос SQL Важно следующее: операция объединения может быть выполнена только тогда, когда два отношения обладают одинаковым числом и названиями атрибутов (столбцов), или, говоря формально, совместимы по объединению. Результатом пересечения двух множеств (отношений) А и В ( Запрос SQL В некоторых диалектах SQL отсутствует ключевое слово INTERSECT. Поэтому, например, в MySQL и других, операция пересечения множеств может реализована с применением предиката EXISTS. Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2: Разность двух отношений R1 и R2 ( Запрос SQL Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2: В некоторых диалектах SQL отсутствует ключевое слово EXCEPT. Поэтому, например, в MySQL и других, операция пересечения множеств может реализована с применением предиката NOT EXISTS. Операция декартова произведения ( Запрос SQL Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4: В новом отношении должны присутствовать все атрибуты (столбцы) двух отношений. Сначала первая строка отношения R3 сцепляется с каждой из двух строк отношения R4, затем вторая строка отношения R3, затем третья. В результате должно получиться 3 Х 2 = 6 кортежей (строк). Получаем такое новое отношение: Результатом операции деления ( Запрос SQL Давайте посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R5 и R6: Комбинации всех кортежей отношения R6 соответствуют вторая и третья строки отношения R5. Но после исключения атрибутов (столбцов) А2 и А3 эти строки становятся идентичными. Поэтому в новом отношении присутствует эта строка один раз. Новое отношение: Запрос SQL Посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4:Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт” 156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро” 123 Печеньки ООО ”Темная сторона” 190 156 ОАО ”Ведро” 156 Чай ООО ”Темная сторона” 60 123 OOO “Дарт” Реляционная алгебра, операции реляционной алгебры
Что такое реляционная алгебра
Операция выборки

R3 A1 A2 A3 A4 3 hh yl ms 4 pp a1 sr 1 rr yl ms
R A1 A2 A3 A4 3 hh yl ms 1 rr yl ms Операция проекции
R3 A1 A2 A3 A4 3 hh yl ms 4 pp a1 sr 1 rr yl ms
R A4 A3 ms yl sr a1 Операция объединения

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 Операция пересечения

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 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 Операция декартова произведения

R3 R4 A1 A2 A3 A4 A5 A6 3 hh yl ms 3 hh 4 pp a1 sr 4 pp 1 rr yl ms
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 Операция деления

R5 R6 A1 A2 A3 A4 A2 A3 2 S3 4 sun R4 8 3 X8 7 kab X8 7 3 R4 8 kab Операция тета-соединения
R3 R4 A1 A2 A3 A4 A5 A6 3 hh yl ms 3 hh 4 pp a1 sr 4 pp 1 rr yl ms






