
- •Тема 4. Модели данных
- •4.1. Общие сведения о моделях данных.
- •4.2. Древовидные структуры.
- •Сбалансированные, несбалансированные и двоичные деревья.
- •4.3. Сетевые модели.
- •Приведение сетевых структур к более простому виду.
- •Постреляционная модель.
- •4.4. Реляционные модели данных.
- •4.5. Реляционная алгебра.
- •X 101 5 ay 105 3 az 500 9 aw 50 1 bw 10 2 b w 300 4 b 5 a10 b15 c2 d6 a1 b
- •5. Селекция (выборка).
- •2.2. Естественное соединение (эквисоединение).
- •2.3. Композиция.
- •2.4. Внешние соединения.
- •3. Деление
- •4.6. Примеры использования операций реляционной алгебры.
- •4.7. Реляционное исчисление.
- •4.7.1.Реляционное исчисление кортежей.
- •2. Операция разности.
- •4.7.2. Реляционное исчисление доменов.
- •4.8. Оптимизация запросов
- •4.9. Динамика развития моделей данных.
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}.