Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Замечание. Для запросов, использующих один файл удобнее пользоваться операцией выбора с логическим «И».
Пример 8: определить №_отдела, в котором выполняют работу вида 2 и 4.
рroj №_отдела (sel (№_работы = 2) and (№_работы = 4)(Работа)).
Пример 9: определить № отдела, в которой выполняют работу 9 и ведут отчетность по форме 5
proj №_отдела(sel отчетность = 5 (отдел)) intersection proj №_отдела(sel№_работы = 9 (Работа)).
е. Операция вычитания.
Синтаксис: ИФ1 difference ИФ2
Результат – совокупность записей, имеющихся в ИФ1, но отсутствующих в ИФ2.
Пример 10:
ИФ1 ИФ2 ИФ1 union ИФ2
F1 | G1 |
a | 4 |
b | 5 |
c | 6 |
f | 5 |
F1 | G1 |
d | 1 |
b | 5 |
e | 4 |
c | 6 |
F1 | G1 |
a | 4 |
f | 5 |
Рис.27.6
Пример 11: составить список сотрудников, у которых нет детей
proj Имя_служащего((proj №_служащего (Служащий) difference proj №_служащего (Дети)) join Служащий).
ё. Операция деления.
Синтаксис: ИФ1 division ИФ2
Условия выполнения – каждое поле ИФ2 имело те же имя и тип, что и одно из полей ИФ1. В результате деления получается файл, поля которого содержатся в ИФ1, но отсутствуют в ИФ2. Запись включается в результат только при том условии, что в ИФ1 она сцеплена с каждой записью из ИФ2.
Пример12:
ИФ1 ИФ2 ИФ1 division ИФ2
G2 | F1 | G1 |
A | d | 3 |
C | h | 7 |
B | h | 7 |
B | y | 4 |
A | y | 4 |
A | h | 7 |
B | d | 3 |
C | y | 4 |
F1 | G1 |
3 | d |
7 | h |
4 | y |
G2 |
A |
B |
Рис.27.7
Запись А, В включена в результат, так как в ИФ1 есть записи,
G2 | G1 | F1 |
A | d | 3 |
A | h | 7 |
A | y | 4 |
аналогично для записи В, запись С отсутствует, так как в ИФ1 нет записи С d З.
Пример 13:
Определить список отделов, в которых выполняются все виды работ.
Работа division (proj №_работы, описание работы (Работа)).
ж. Операция Умножение (декартово произведение).
Синтаксис: ИФ1 product ИФ2
Результат – совокупность записей, представляющих конкатенацию каждой записи ИФ1 с каждой записью ИФ2.
Пример 14:
F1 | F2 |
b | 4 |
d | 7 |
ИФ1 ИФ2 ИФ1 product ИФ2
F3 | F4 |
A | 4 |
C | R |
ИФ1.F1 | ИФ1.F2 | ИФ1.F3 | ИФ1.F4 |
b | 4 | A | 4 |
b | 4 | C | R |
d | 7 | A | 4 |
d | 7 | C | R |
Рис.27.8
В образованном файле каждое поле сохраняет прежнее имя, но оно дополняется именем файла, из которого взято. Это делается, чтобы избежать совпадения имен полей в одноименном файле.
Пример 15: определить список лиц, которые получили повышение оклада после того, как Иванов (№_служащего 15) занял должность главного инженера.
proj Имя_служащего (proj №_служащего (sel Изм, Окл. Дата_устр.> Труд. Деятельность. Дата_назначения (Изм. оклада product (sel №_служащего = 15 and должность = «главный инженер» (Труд. деятельность)))) join служащий).
Систему операций, используемую для манипулирования отношениями, называют алгеброй отношений. Оператор в ней имеет одно или несколько отношений в качестве операнда и образует новое отношение по определенному правилу.
Можно и далее разработать набор операций для своих узких целей, использую исчисление отношений. Исчисление отношений – это аппарат для формулирования отношения, которое можно получить из хранимых в БД отношений, он предоставляет машине самой решать, какие операции необходимо выбрать для получения нужного отношения из БД.
Символика в исчислении отношений.
Символ | Объяснение |
x • y | Множество значений элементов данных из доменов у отношения х. |
A(x1·y1, x2·y2… ) | Отношение с именем А задано над доменами, которые являются множествами значений х1·у1, х1·у2, … соответственно. |
∃ | «Существует» |
: | «Такой, что». Выражение слева от двоеточия означает то, что должно быть найдено выражение справа – условие. |
∀ | Для любого |
⋀ | «И» должны выполняться одновременно условия слева и справа от знака. |
⋁ | «ИЛИ» должно выполняться хотя бы одно из двух условий. |
− | «НЕ» условие, записанное справа от знака должно не выполняться. |
≠, =, <, >. | Не равно, равно, меньше, больше |
‘x’ | Символьное значение х. |
Рис. 28.
В таблице на рисунке 28 приведен список символов, которые используются в вычислении отношений. Рассмотрим несколько типичных примеров использования исчисления отношений:
Пример 1: из отношения служащий образовать отношение Q, включающее признаки Имя_служащего и з/пл для всех сотрудников отдела 721 с з/пл более 2000:
Q (Служащий ∙ Имя_служащего, Служащий ∙ з/пл):Служащий · №_отдела = 721 ∧ Служащий ∙ з/пл > 2000.
Пример 2: с помощью отношений
Р123 (учетный_№, Дата_преступления, вид_преступления, срок_заключения)
А117(учетный_№, Имя, адрес, почтовый_индекс)
А125(учетный_№, Имя, профессия, годовой_доход)
образовать отношение Q, содержащее признаки: вид_преступления и срок_заключения лиц с профессией Бухгалтер:
Q(Р123∙вид_преступления, Р123∙срок_заключения) : ∃ А125 (А125 ∙ профессия = «Бухгалтер» ∧ А125 ∙ учетный номер = Р123 ∙ Учетный_№).
Пример 3: используя отношения
Студент (№_студента, Имя_студента, прочие_сведения_о_студенте).
Преподаватель (№_преподавателя, Имя_преподавателя, прочие_сведения_о_преподавателе)
Студ_Преп(№_студента, №_преподавателя)
образовать отношение, содержащее сведения о студентах, которые обучаются у всех преподавателей:
Q(Студент∙№_студента, Студент∙Имя_студента) : ∀ преподаватель ∃ ∧ Студ_Преп (Студ_преп∙№_студента = Студент ∙ №_студента ∧ Студ_Преп ∙ №_преподавателя = Преподаватель ∙ №_преподавателя).
Отметим некоторые преимущества исчисления отношений по сравнению с алгеброй отношений. Во-первых, пользователя не интересует, каким именно образом машина получит нужный ему результат; машина же имеет некоторую свободу для выбора наилучшего способа получения результата. Во-вторых, процедуры, обеспечивающие секретность данных, выглядят гораздо проще, так как они связаны явно выраженными в запросе требованиями к данным, а не с процедурами пользователя. В-третьих, для пользователя – непрограммиста естественнее требовать данные по их названиям, чем вводить собственный набор операций.
Недостатком исчисления отношений является сложность его разработки. Исчисление отношений требует более высокого уровня автоматизации.
Итак, можно выделить три уровня автоматизации, применяемые в языках пользователя БД:
1. Исчисление. Высший уровень автоматизации. Пользователь непосредственно обращается к машине, и машина его понимает.
2. Алгебра. Пользователь вводит набор операций высокого уровня над отношениями (или другими группами данных).
3. Кортеж. Низший уровень. Программист работает с записями или кортежами.
Преимущества реляционной базы (базы, заданной в третьей нормальной форме).
a. Простота. Использование двумерных таблиц для представления большинства структур данных – самый простой способ работы с БД для необученного или не очень опытного пользователя.
b. Гибкость. Операции реляционной алгебры позволяют ПП – листам получать разнообразные файлы в нужной им форме.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 |


