Операции выборки и проекции являются унарными, поскольку они работают с одним отношением.
Операция выборки - построение горизонтального подмножества, т.е. подмножества кортежей, обладающих заданными свойствами.
Операция выборки работает с одним отношением R и определяет результирующее отношение, которое содержит только те кортежи (строки) отношения R, которые удовлетворяют заданному условию F (предикату).
или
Пример 5.1. Операция выборки в SQL.
Выборка записывается следующим образом:
SELECT a1, a2
FROM R
WHERE a2=1
5.1. Операция выборки в SQL.
Операция проекции - построение вертикального подмножества отношения, т.е. подмножества кортежей, получаемого выбором одних и исключением других атрибутов.
Операция проекции работает с одним отношением R и определяет новое отношение, которое содержит вертикальное подмножествоотношения R, создаваемое посредством извлечения значений указанных атрибутов и исключения из результата строк-дубликатов.
Пример 5.2. Операция проекции в SQL.
Проекция записывается следующим образом:
SELECT DISTINCT b2
FROM S
5.2. Операция проекции в SQL.
Операция соединения отношений, наряду с операциями выборки и проекции, является одной из наиболее важных реляционных операций.
Обычно рассматривается несколько разновидностей операции соединения:
Общая операция соединения
соединение (тэта-соединение)
Экви-соединение
Естественное соединение
Наиболее важным из этих частных случаев является операция естественного соединения. Все разновидности соединения являются частными случаями общей операции соединения.
Общая операция соединения
Определение
8. Соединением отношений
и
по
условию
называется
отношение
с представляет собой логическое выражение, в которое могут входить атрибуты отношений А и В (или) скалярные выражения.
Таким образом, операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях А и В имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.
Тэта-соединение
Определение 9. Пусть отношение А содержит атрибут Х, отношение В содержит атрибут У, а Н - один из операторов сравнения (=,>,< и т.д.). Тогда Н -соединением отношения В по атрибуту У с отношением А по атрибуту Х называют отношение
Это частный случай операции общего соединения.
Иногда,
для операции Н
-соединения
применяют следующий, более короткий
синтаксис:
Экви-соединение
Наиболее важным частным случаем Н-соединения является случай, когда Н есть просто равенство.
Синтаксис экви-соединения:
Естественное соединение
Определение
10.
Пусть даны отношения
и
,
имеющие одинаковые атрибуты
(т.е.
атрибуты с одинаковыми именами и
определенные на одинаковых доменах).
Тогда естественным
соединением отношений А и В называется
отношение с заголовком
и
телом, содержащим множество кортежей
,
таких, что
и
.
Естественное соединение настолько важно, что для него используют специальный синтаксис:
Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.
Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций:
Переименовать одинаковые атрибуты в отношениях
Выполнить декартово произведение отношений
Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена
Выполнить проекцию, удалив повторяющиеся атрибуты
Переименовать атрибуты, вернув им первоначальные имена
Замечание. Можно выполнять последовательное естественное соединение нескольких отношений. Нетрудно проверить, что естественное соединение (как, впрочем, и соединение общего вида) обладает свойством ассоциативности, т.е.
поэтому такие соединения можно записывать, опуская скобки:
Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах).
Тогда естественным соединением отношений А и В называется отношение с заголовком и телом, содержащим множество кортежей , таких, что и .
Естественное соединение настолько важно, что для него используют специальный синтаксис:
Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.
Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций:
Переименовать одинаковые атрибуты в отношениях
Выполнить декартово произведение отношений
Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена
Выполнить проекцию, удалив повторяющиеся атрибуты
Переименовать атрибуты, вернув им первоначальные имена
Замечание. Можно выполнять последовательное естественное соединение нескольких отношений. Нетрудно проверить, что естественное соединение (как, впрочем, и соединение общего вида) обладает свойством ассоциативности, т.е.
поэтому такие соединения можно записывать, опуская скобки:
Определение
11. Пусть даны
отношения
и
,
причем атрибуты
-
общие для двух отношений. Делением
отношений А на В называется
отношение с заголовком
и
телом, содержащим множество кортежей
,
таких, что для всех
кортежей
в
отношении А найдется
кортеж
.
Отношение А выступает в роли делимого, отношение выступает в роли делителя. Деление отношений аналогично делению чисел с остатком.
Синтаксис операции деления:
Замечание. Типичные запросы, реализуемые с помощью операции деления, обычно в своей формулировке имеют слово "все" - "какие поставщики поставляют все детали?".
Пример 11. В примере с поставщиками, деталями и поставками ответим на вопрос, "какие поставщики поставляют все детали?".
В
качестве делимого возьмем проекцию
,
содержащую номера поставщиков и номера
поставляемых ими деталей:
Номер поставщика PNUM |
Номер детали DNUM |
1 |
1 |
1 |
2 |
1 |
3 |
2 |
1 |
2 |
2 |
3 |
1 |
Таблица 21 Проекция X=PD[PNUM,DNUM]
В
качестве делителя возьмем проекцию
,
содержащую список номеров всех деталей
(не обязательно поставляемых кем-либо):
Номер детали DNUM |
1 |
2 |
3 |
Таблица 22 Проекция Y=D[DNUM]
Деление
дает
список номеров поставщиков,
поставляющих все детали:
Номер поставщика PNUM |
1 |
Таблица 23 Отношение X DEVIDEBY Y
Оказалось, что только поставщик с номером 1 поставляет все детали.
Оператор соединения определяется через операторы декартового произведения и выборки. Для оператора естественного соединения добавляется оператор проекции.
Оператор пересечения выражается через вычитание следующим образом:
Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом:
Таким образом показано, что операторы соединения, пересечения и деления можно выразить через другие реляционные операторы, т.е. эти операторы не являются примитивными.
Реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются примитивными операторами - их нельзя выразить друг через друга.
В реляционной модели данных сущности обычно связаны друг с другом, поскольку моделируемые ими объекты предметной области, как правило, не являются изолированными друг от друга.
Очень важно, что связи являются неотъемлемой составляющей данных, как и основные сущности. Поэтому связи в БД должны быть представлены наравне с остальными сущностями предметной области.
Каждая связь между сущностями идентифицируется названием, как правило глаголом или глагольной формой. Например: студент занимается группой, самолет управляется экипажем и т. д.
Существует 3 основные типа связи между сущностями:
1:1 – связь, где каждому картежу 1 сущности соотв. не более 1 кортежа 2 сущности и наоборот
Связь 1:1 на практике встречается редко, т. к. сущности такой связи обычно объединяют в 1 сущность. Эту связь используют тогда, когда не хотят чтобы сущность «разрасталась» от включения в неё второстепенной информации, которую оформляют в виде другой сущности и снабжают тем же ключом, что и у основной сущности. Так сущности «Мужчина » и «Женщина» можно объединить в сущность «Семейная пара»:
Например сущность «служащий» можно наоборот разбить на сущности «Сотрудник» и «Доп. сведения»: