
4.7. Реляционное исчисление.
В выражениях реляционной алгебры всегда явно задается порядок операций и порядок их выполнения, т.е. тесть реляционная алгебра является процедурной системой.
Исчисления являются декларативной системой, т.е. они задают только, каким должен быть результат вычислений, но не то каким образом проводить вычисления. Определение наиболее эффективного порядка вычисления определяется транслятором.
Реляционное исчисление имеет свои источники в исчислении предикатов. В контексте баз данных оно существует в двух формах: в форме предложенной Коддом(реляционного исчисления кортежей) и в форме предложенной Лакруа и Пиро (реляционного исчисления доменов).
В теории исчисления предикатов, под предикатом понимается истинная функция с аргументами. При подстановке аргументов вместо их значений функция становиться выражением называется суждением, которое может быть истинным или ложным. Обозначим предикат как ψ(t), где t- переменная, которая имеет область определения.
Множество всех значений переменной t , при которых суждение ψ(t) становиться истинным, можно записать следующим образом:
{t/ ψ(t)}
4.7.1.Реляционное исчисление кортежей.
Это исчисление основано на переменных t, обозначающих кортежи некоторой фиксированной длины и областью их определения является заданные отношения(т.е. его кортежи). ψ(t) – называется формулой, которая строится по специальным правилам.
Пусть дано отношение R(A1,A2,A3,A4)
i j
А |
А2 |
А3 |
А4 |
t |
Si |
|
|
|
|
|
Uj |
|
|
|
|
S- кортежи
U- кортежи
S и U – кортежи.
i и j – домены.
Si – элемент кортежа S с номером i.
Uj – элемент кортежа U с номером j.
Формула отношения ψ(t) или предикат строится из атомов трех типов.
Атом первого типа:
R(t) – кортежи отношения R.
Пусть Ѳ:{<,>,=,≥,≤,≠}- операторы сравнения.
Атом второго типа имеет вид:
Si Ѳ Uj – сравнение элементов кортежей между собой (где Ѳ – оператор сравнения.)
Атом третьего типа имеет вид:
ѲSiѲa – сравнение элементов кортежа с постоянной величиной.
Выражение: {t/ ψ(t)}- обозначает множество всех кортежей t, при которых формула ψ(t) становиться истиной.
В формулах используются: логические операторы(и, или, не), кванторы (V- для всех, Ǝ - существует).
Правильно построена формула.
(Well formed formula)
Аналогично тому, как те две возможные последовательности букв алфавита образуют правильно построение слова, так и в реляционном исчислении не каждая последовательность формул является допустимой. Допустимыми формулами могут быть только недвусмысленные и небессмысленные последовательности.
ППФ(wff) в исчислении предикатов определяется следующими правилами:
-
Каждый атом - это формула.
Если Р является n-арной формулой (предикатом с n аргументами), а t1,t2,….tn – это константы или переменные, то выражение P(t1,t2,….tn) является правильно построенной формулой.
-
Если t1 и t2 являются константами или переменными из одного домена, а Ѳ представляет собой один из операторов сравнения (<, >, =, ≤, ≥) то выражение t1 Ѳ t2 является ППФ.
-
Если выражение F1 и F2 является формулами, то их конъюнкция F1 Λ F2 (и), F1 v F2 (или), и отрицание ~ F1 (не), тоже являются формулами.
-
Если выражение F1 является формулой со свободной переменной x, то выражение (существует) Ǝ F(x) и (для всех) V F(x), так же является формулой.
-
Формулы при необходимости могут заключаться в скобки. Используется следующий порядок старшинства:
-
Операторы сравнения
-
Кванторы(V- для всех, Ǝ - существует)
-
Логические операторы(и, не, или)
-
Для операций реляционной алгебры можно указать выражения реляционной алгебры исчисления на переменных кортежах.
1.Операция объединения.
Реляционная
алгебра R1 U
R2
Реляционное исчисление:
R1 U R2 ={ t|t ϵ R1(t) V t ϵ R2(t)
Необходимо получить множество
всех кортежей t, которые принадлежат отношениям R1 или R2.
2. Операция разности.
Реляционная
алгебра R= R1-R2
Реляционное исчисление:
R1
- R2 ={ t|t
ϵ R1(t)
Λ t
ϵ
R2(t)}
Необходимо получить множество
всех кортежей t, которые принадлежат отношению R1 и не принадлежат отношению R2.
Операция разности не является коммутативной операцией, т.е. R1 – R2 ≠ R2 – R1. Аргументы в операции разности R1 и R2 нельзя переставлять местами.
3. Операция декартово произведение.
Пусть r- кортежи отношения R1 ,т.е. R1(r)
q- кортежи отношения R2 ,т.е. R2(q)
(rq)- кортеж, полученный добавлением значений второго отношения R2 в конец первого отношения R1. Он называется конкатенацией кортежей и обозначается (rq)
Реляционная алгебра R1×R2 ={(rq)|r ϵ R1(r)Λ q ϵ R2(q)}
Т.е. необходимо получить множество всех кортежей (rq), в которых r принадлежащий R1(r) и q принадлежащий кортежам R2(q).
4. Операция селекции.
Реляционная алгебра R = Ϭ F(R1)
Реляционное исчисление:
R ={ t|t ϵ R1(t) Λ F = “истина”}
Т.е. необходимо получить множество кортежей t, принадлежащих отношению R1, для которых истинно условие селекции F (или условие выборки или фильтрации)
5.Операция пересечения.
Реляционная
алгебра R1 ∩ R2
Реляционное исчисление:
R1 ∩ R2 = { t|t ϵ R1(t) Λ t ϵ R2(t)}
Т.е. необходимо получить множество всех кортежей
t, которые принадлежат отношению R1 И R2
Запросы с помощью редяционного исчисления кортежей.
Используем таблицу:
Stuff(Sno, Fname, Lname, Adress, Tel_no, Position, Sex, Dat, Salary, NiN, Bno)
Sno – Личный номер сотредника
Fname - Имя
Lname – Фамилия
Adress - Адрес
Tel_no – Номер телефона
Position - Должность
Sex - Пол
Dat – Дата рождения
Salary - Зарплата
NiN – Личный номер социального страхования
Bno – Номер отделения, в котором сотрудник работает
Область определения кортежей являются отношения, указанные в формулах. Мы работаем с отношением Stuff. Область определения кортежей t запием таким образом:
Range of t is stuff, далее сформулируем запросы.
Запрос 1.
Выбрать все атрибуты отношения stuff для сотрудников, которые получают зарплату больше 10 тысяч.
{t|t.salary>10000}
Запрос 2.
Создайте список всех менеджеров, зарплата которых превышает 25000.
{t|t.position = “manager”.AND t.salary>25000}
4.7.2. Реляционное исчисление доменов.
В реляционном исчислении доменов используются переменные, значения которых берутся из доменов отношения.
Обозначим переменную домен как d, а предикат как P(d).
Множество всех значений домена d, для которых предикат истина обозначим как {d| P(d)}
Если мы разработаем с отношением Stuff(Sno, Fname, Lname, Adress, Tel_no, Position, Sex, Dat, Salary, NiN, Bno) то к примеру stuff.salary – обозначает домен salary из отношения stuff.
Запрос 1.
Найдите имена всех сотрудников зарплата которых больше 25000. Список домен содержит атрибут Fname. Используется отношение stuff. Обозначим переменную
домен –d, значит 1.Range of d is stuff. Предикат для запроса можно записать P(d)= staff.salary>25000, а множество всех значений для которых предикат истина {F Fname | staff.salary>25000}.
Запрос 2.
Найдите имена всех менеджеров, зарплата которых больше 25000. Список должен содержать атрибуты Lname и Fname.
-
Range of d is stuff.
-
{name, Fname | staff.position = “manager” AND stuff.salary>25000}.
4.9. Динамика развития моделей данных.
Динамика развития моделей данных может быть наглядно представлена в виде следующего графика:
ООСУБД- обладают возможностью отображения информации о сложных взаимосвязях объектов, но для них характерна низкая скорость выполнения запросов. Логическая структура объектно-ориентированной СУБД внешне похожа на иерархическую структуру, в узлах которой находятся объекты данных.В реляционных СУБД используется реляционная модель данных т.е. данные представляются в виде отношений. Языки для этих СУБД являются объектно- ориентированными. Они работают с объектами, а данные не являются объектами. ООСУБД устраняет это противоречие. В них данные являются объектами. Для них можели данных разрабатываются специалистми СУБД.
ОРСУБД – занимают лидирующую позицию по сложности данных и гибкости поиска. ОРСУБД – или постреляционная СУБД.
Модель этого типа допускает хранение ненормализованных данных. Реализация этого условия требует сложных СУБД, но упрощает работу с данными и увеличивает скоростные характеристики БД.