Выборка (R WHERE f) отношения R по формуле f представляет собой новое отношение с таким же заголовком и телом, состоящим из таких кортежей отношения R, которые удовлетворяют истинности логического выражения, заданного формулой f. Для записи формулы используются операнды — имена атрибутов (или номера столбцов), константы, логические операции (AND - И, OR - ИЛИ, NOT - HE), операции сравнения и скобки.
Выборки. Р WHERE Вес < 14
|
д# |
Название |
Тип |
Вес |
ГородЛ |
|
Р1 |
гайка |
каленый |
12 |
Москва |
|
Р5 |
палец |
твердый |
12 |
Киев |
SP WHERE П# - "SI" AND Д# = "Р1"
|
п# |
д# |
Количество |
|
S1 |
Р1 |
300 |
Проекция отношения А на атрибуты X, Y,..., Z (А [X, Y,..., Z]), где множество {X, Y,..., ZJ является подмножеством полного списка атрибутов заголовка отношения А, представляет собой отношение с заголовком X, Y,..., Z и телом, содержащим кортежи отношения А, за исключением повторяющихся кортежей. Повторение одинаковых атрибутов в списке X, Y,..., Z запрещается.
Операция проекции допускает следующие догашштелыше варианты записи:
• отсутствие списка
атрибутов подразумевает указание всех атрибутов
(операция
тождественной проекции);
• выражение вида R[ ] означает пустую
проекцию, результатом которой
является пустое множество;
• операция проекции
может применяться к произвольному отношению,
в том числе и к результату
выборки.
Примеры 4. Проекции.
Р [Тип, Город_Д] (S WHERE Город_П="Киев") [П#]
|
Тип |
Город_Д |
|
каленый |
Москва |
|
мягкий |
Киев |
|
твердый |
Ростов |
|
твердый |
Киев |
|
П# |
Город_П |
|
S2 |
Киев |
|
S3 |
Киев |
Результатом деления отношения R1 с атрибутами А и В на отношение R2 с атрибутом В (Rl DIVIDEBY R2), где А и В простые или составные атрибуты, причем атрибут В — общий атрибут, определенный на одном и том же домене (множестве доменов составного атрибута), является отношение R с заголовком А и телом, состоящим из кортежей г таких, что в отношении R1 имеются кортежи (г, s), причем множество значений s включает множество значений атрибута В отношения R2.
3. Реляционная модель данных
69
Пример 5. Деление
отношения.
Пусть R1 — проекция SP [П#, Д#], a R2 — отношение с заголовком Д# и телом {Р2, Р4}, тогда результатом деления R1 на R2 будет отношение R с заголовком П# и телом {SI, S4}.
R1
|
п# |
д# |
|
S1 |
Р1 |
|
S1 |
Р2 |
|
S1 |
РЗ |
|
S1 |
Р4 |
|
S1 |
Р5 |
|
S1 |
Р6 |
|
S2 |
Р1 |
|
S2 |
Р2 |
|
S3 |
Р2 |
|
S4 |
Р2 |
|
S4 |
Р4 |
|
S4 |
Р5 |
R2
д#
Р2
Р4
Rl DIVIDEBY R2
П#
S1
S4
Соединение Cf(Rl, R2) отношений R1 и R2 по условию, заданному формулой f, представляет собой отношение R, которое можно получить путем Декартова произведения отношений R1 и R2 с последующим применением к результату операции выборки по формуле f. Правила записи формулы f такие же, как и для операции селекции.
Другими словами, соединением отношения R1 по атрибуту А с отношением R2 по атрибуту В (отношения не имеют общих имен атрибутов) является результат выполнения операции вида:
(Rl TIMES R2) WHERE A © В,
где Q—логическое выражение над атрибутами, определенными на одном (нескольких — для составного атрибута) домене. Соединение Cf(Rl, R2), где формула f имеет произвольный вид (в отличие от частных случаев, рассматриваемых далее), называют также Q-соединением.
Важными с практической точки зрения частными случаями соединения являются эквисоединение и естественное соединение.
Операция эквисоединения характеризуется тем, что формула задаег равенство операндов. Приведенный выше пример демонстрирует частный случай операции эквисоединения по одному столбцу. Иногда эквисоединение двух отношений выполняется по таким столбцам, атрибуты которых в обоих отношениях имеют соответственно одинаковые имена и домены. В этом случае говорят об эквисоединении по общему атрибуту.
Операция естественного соединении (onepannflJOIN) применяется к двум отношениям, имеющим общий атрибут (простой или составной). Этот атрибут в отношениях имеет одно и то же имя (совокупность имен) и определен на одном и том же домене (доменах).
Результатом операции естественного соединения является отношение R, которое представляет собой проекцию эквисоединения отношений R1 и R2 по общему атрибуту на объединенную совокупность атрибутов обоих отношений.
Пример 6. Q-соединение.
Необходимо найти соединение отношений S и Р по атрибутам ГородП и ГородД соответственно, причем кортежи результирующего отношения должны удовлетворять отношению «больше» (в смысле лексикографического порядка — по алфавиту).
(S TIMES P) WHERE Город_П > Город_Д Пример 7. Эквисоединение.
|
п- # |
Имя |
Статус |
Город_П |
Д# |
Название |
Тип |
Вес |
Город_Д |
|
S2 |
Иван |
10 |
Киев |
Р1 |
гайка |
каленый |
12 |
Москва |
|
S2 |
Иван |
10 |
Киев |
Р4 |
винт |
каленый |
14 |
Москва |
|
S2 |
Иван |
10 |
Киев |
Р6 |
шпилька |
каленый |
19 |
Москва |
|
S3 |
Борис |
30 |
Киев |
Р1 |
гайка |
каленый |
12 |
Москва |
|
S3 |
Борис |
30 |
Киев |
Р4 |
винт |
каленый |
14 |
Москва |
|
S3 |
Борис |
30 |
Киев |
Р6 |
шпилька |
каленый |
19 |
Москва |
Пусть необходимо найти естественное соединение отношений 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 |
3. Реляционная модель данных
|
3 |
Борис |
30 |
Киев |
Р2 |
болт |
мягкий |
17 |
|
S3 |
Борис |
30 |
Киев |
Р5 |
палец |
твердый |
12 |
|
34 |
Николай |
20 |
Москва |
Р1 |
гайка |
каленый |
12 |
|
S4 |
Николай |
20 |
Москва |
Р4 |
винт |
каленый |
14 |
|
S4 |
Николай |
20 |
Москва |
Р6 |
шпилька |
каленый |
19 |