- •3. Детализация реляционной модели данных
- •3.1. Определение и элементы реляционной модели
- •3.2 Связывание таблиц
- •3.2.1 Назначение и основные виды связывания таблиц
- •3.2.2 Межтабличная связь вида 1:1
- •3.2.3 Межтабличные связи вида 1:м и вида м:1
- •Межтабличная связь вида м:м
- •3.3 Контроль целостности связей
- •3.4 Теоретические языки запросов
- •3.5 Основы реляционной алгебры
- •3.5.1 Общая характеристика реляционной алгебры
- •3.5.2 Базовые теоретико-множественные операции реляционной алгебры Кодда
- •3.5.3 Специальные реляционные операции реляционной алгебры Кодда
- •3.5.4 Дополнительные операции реляционной алгебры
- •3.5.5Основные правила записи выраженийреляционной алгебры
- •3.6. Основы реляционного исчисления
- •3.6.1 Сущность реляционного исчисления и его соотношение с реляционной алгеброй
- •3.6.2 Реляционное исчисление, основанное на кортежах
- •3.6.3 Реляционное исчисление, основанное на доменах
- •3.7 Структурированный язык запросовSql
- •3.7.1 Общая характеристика и основные операторы языкаSql
- •3.7.2 Оператор создания таблицы
- •3.7.3 Оператор изменения структуры таблиц
- •3.7.4 Оператор удаления таблицы
- •3.7.5 Оператор создания индекса
- •3.7.6 Оператор удаления индекса
- •3.7.7Оператор создания представления
- •3.7.8 Оператор удаления представления
- •3.7.9 Оператор выборки записей
- •3.7.10 Оператор изменения записей
- •3.7.11 Оператор вставки новых записей
- •3.7.12 Оператор удаления записей
- •3.7.13 Некоторые важные функции sql
- •3.7.14 Триггеры, ограничения, правила и хранимые процедуры
- •3.7.14.1 Определения
- •3.7.14.2 Создание триггеров
- •3.7.14.3 Создание хранимых процедур
- •3.7.14.4 Создание правил и ограничений
3.5.3 Специальные реляционные операции реляционной алгебры Кодда
Выборка (RWHEREf) отношенияRпо формулеfпредставляет собойновое отношение с таким же заголовком и телом, состоящим из таких кортежей отношения R, которые удовлетворяют истинности логического выражения, заданного формулой f. Для записи формулы используются операнды — имена атрибутов (или номера столбцов), константы, логические операции(AND — И, OR — ИЛИ, NOT — HE), операции сравнения и скобки.
Примеры 3.
Выборки. Р WHERE Вес < 14
-
д#
Название
Тип
Вес
Город_Д
Р1
гайка
каленый
12
Москва
Р5
палец
твердый
12
Киев
SP WHERE П# = "SI" AND Д# = "Р1
п# |
Д# |
Количество |
S1 |
Р1 |
300 |
Проекцияотношения А на атрибутыX,Y,...,Z(А [X,Y,...,Z]), где множество{X, Y,..., Z} является подмножеством полного списка атрибутов заголовка отношения А, представляет собой отношение с заголовкомX,Y,...,Zи телом, содержащим кортежи отношения А, за исключением повторяющихся кортежей.Повторение одинаковых атрибутов в списке X, Y,..., Z запрещается.
Операция проекции допускает следующие дополнительные варианты записи:
отсутствие списка атрибутов подразумевает указание всех атрибутов (операция тождественной проекции);
выражение вида R[ ] означает пустую проекцию, результатом которойявляется пустое множество;
операция проекции может применяться к произвольному отношению, в том числе и к результату выборки.
Примеры 4. Проекции.
Р [Тип, Город_Д] (S WHERE Город_П="Киев") [П#]
П# |
Город_П |
S2 |
Киев |
S3 |
Киев |
Тип |
Город_Д |
каленый |
Москва |
мягкий |
Киев |
твердый |
Ростов |
твердый |
Киев |
Результатом деления отношенияR1 с атрибутами А и В на отношениеR2 с атрибутом В (RlDIVIDEBYR2), где А и В простые или составные атрибуты, причем атрибут В — общий атрибут, определенный на одном и том же домене (множестве доменов составного атрибута), является отношение R с заголовком А и телом, состоящим из кортежей г таких, что в отношенииR1имеются кортежи (г, s), причем множество значений s включает множество значений атрибута В отношения R2.
Пример 5. Деление отношения.
Пусть R1 — проекция SP [П#, Д#], a R2 — отношение с заголовком Д# и телом {Р2, Р4}, тогда результатом деления R1 на R2 будет отношение R с заголовком П# и телом {SI, S4}.
Rl R2 Rl DIVIDEBY R2
П
Д#
Р2
Р4
П#
S1
S4
|
Д# | ||||||
S1 |
Р1 | ||||||
S1 |
Р2 | ||||||
S1 |
РЗ | ||||||
S1 |
Р4 | ||||||
S1 |
Р5 | ||||||
S1 |
Рб | ||||||
S2 |
Р1 | ||||||
S2 |
Р2 | ||||||
S3 |
Р2 | ||||||
S4 |
Р2 | ||||||
S4 |
Р4 | ||||||
S4 |
Р5 |
Соединение Cf(Rl,R2) отношенийR1 иR2 по условию, заданному формулойf, представляет собой отношениеR, которое можно получить путем Декартова произведения отношенийR1 иR2 с последующим применением к результату операции выборки по формулеf. Правила записи формулыfтакие же, как и для операции селекции.
Другими словами, соединением отношения R1 по атрибуту А с отношениемR2 по атрибуту В (отношения не имеют общих имен атрибутов) является результат выполнения операции вида:
(Rl TIMES R2) WHERE A Θ В,
где Q — логическое выражение над атрибутами, определенными на одном (нескольких — для составного атрибута) домене. Соединение Cf(Rl, R2), где формула f имеет произвольный вид (в отличие от частных случаев, рассматриваемых далее), называют также Q-соединением.
Важными с практической точки зрения частными случаями соединения являются эквисоединение и естественное соединение.
Операция эквисоединения характеризуется тем, что формула задает равенство операндов. Приведенный выше пример демонстрирует частный случай операции эквисоединения по одному столбцу. Иногда эквисоединение двух отношений выполняется по таким столбцам, атрибуты которых в обоих отношениях имеют соответственно одинаковые имена и домены. В этом случае говорят об эквисоединении по общему атрибуту.
Операция естественного соединения (операция JOIN) применяется к двум отношениям, имеющим общий атрибут (простой или составной). Этот атрибут в отношениях имеет одно и то же имя (совокупность имен) и определен на одном и том же домене (доменах).
Результатом операции естественного соединения является отношение R, которое представляет собой проекцию эквисоединения отношенийR1 иR2 пообщему атрибуту на объединенную совокупность атрибутов обоих отношений.
Пример 6. Q-соединение.
Необходимо найти соединение отношений S и Р по атрибутам Город_П и Город_Д соответственно, причем кортежи результирующего отношения должны удовлетворять отношению «больше» (в смысле лексикографического порядка — по алфавиту).
(S TIMES P) WHERE Город_П > Город_Д
# |
Имя |
Статус |
Город_П |
Д# |
Название |
Тип |
Вес |
ГородЛ |
S2 |
Иван |
10 |
Киев |
Р1 |
гайка |
каленый |
12 |
Москва |
S2 |
Иван |
10 |
Киев |
Р4 |
винт |
каленый |
14 |
Москва |
S2 |
Иван |
10 |
Киев |
Р6 |
шпилька |
каленый |
19 |
Москва |
S3 |
Борис |
30 |
Киев |
Р1 |
гайка |
каленый |
12 |
Москва |
S3 |
Борис |
30 |
Киев |
Р4 |
винт |
каленый |
14 |
Москва |
S3 |
Борис |
30 |
Киев |
Рб |
шпилька |
каленый |
19 |
Москва |
Пример 7. Эквисоединение.
Пусть необходимо найти естественное соединение отношений Sи Р пообщему атрибуту, характеризующему город (в отношении S — это Город_П, а в отношении Р — Город_Д). Поскольку условие операции требует одинаковости имен атрибутов, по которым выполняется соединение, то применяется операция RENAME переименования атрибутов.
(S RENAME Город_П AS Город) JOIN (P RENAME Город_Д AS Город)
П# |
Имя |
Статус |
Город |
Д# |
Название |
Тип |
Вес |
S1 |
Сергей |
20 |
Москва |
1 |
гайка |
каленый |
12 |
S1 |
Сергей |
20 |
Москва |
4 |
винт |
каленый |
14 |
S1 |
Сергей |
20 |
Москва |
6 |
шпилька |
каленый |
19 |
S2 |
Иван |
10 |
Киев |
Р2 |
болг |
мягкий |
17 |
S2 |
Иван |
10 |
Киев |
Р5 |
палец |
твердый |
12 |
S3 |
Борис |
30 |
Киев |
Р2 |
болт |
мягкий |
17 |
S3 |
Борис |
30 |
Киев |
Р5 |
палец |
твердый |
12 |
S4 |
Николай |
20 |
Москва |
Р1 |
гайка |
каленый |
12 |
S4 |
Николай |
20 |
Москва |
Р4 |
винт |
каленый |
14 |
S4 |
Николай |
20 |
Москва |
Р6 |
шпилька |
каленый |
19 |