Элементы теории реляционных БД (ТРБД).
Идеи теории:
Данные всех уровней представляются в виде двухмерных таблиц – Даёт определённое преимущество, т.к. получаются однородные структуры и к ним применим арифметический аппарат – теория множеств.
Рейсы
№ | Пункт_от | Пункт_наз | Вр_выл | Вр_пр | чет |
Москва Одесса Москва Москва Киев | Одесса Москва Томск Киев Москва | 9.30 13.00 1.15 9.30 13.20 | 11.05 13.50 5.10 10.15 13.50 | Чет Чет Чет Нт Нт |
В теории реляционных БД таблицы называются отношениями. Формат отношений определяется множеством имён атрибутов.
R={№, Пункт_от, Пункт_наз, Вр_выл, Вр_пр}
R – Схема отношений (показывает множество имён атрибутов.
Имена атрибутов – имена столбцов.
Любому имени атрибута ставится в соответствие множество допустимых для этого столбца значений – домен.
Любая строка в отношении называется кортежем.
Таблица – множество кортежей
Во множестве имён есть подмножество имён, значения которых уникальны (однозначно определяют кортеж). Такие подмножества назовём ключом (в ТРБД они уникальны).
|
|
Формализация отношений.
Схема отношений R – множество имён атрибутов R={A1, A2,…, An}i=1,2…n.
Домен: Di = dom(Ai) – множество допустимых значений атрибута Ai
Di – непустое конечное множество.
Отношение: r(R), R – схема. R(R) = {t1, t2,…,tn }.
{t1, t2,…,tn }- конечное множество отображений из R в D, причём отображение должно удовлетворять следующим условиям: - значение кортежа на i-м атрибуте.
В ТРБД исключается любое упорядочение имён атрибутов в схеме, т.к. используются неупорядоченные множества.
Ключ – отношения r(R) - , и никакое подмножество k’ не обладает этим свойством.
Суперключ. K={N,чет} – ключ. В суперключе существует подмножество, которое может быть ключом K={№,чет, пункт_от} – суперключ.
Обновление отношений.
Обновление отношение:
1) Add - добавление
2) Del - удаление
3) Ch – изменение
1. Add (r;A1=d1,A2=d2…An=dn).
Add(рейсы;№=737,Пункт_от=…)
Ошибки в следующих ситуациях:
· Кортеж не соответствует схеме
· Некоторое значение кортежа не соответствует доменам
· Вводимый кортеж совпадает по ключу с уже введенным кортежем.
2. Del(r;A1=d1,A2=d2…An=dn). достаточно указать ключевые поля. Del(рейсы; №=736,чет=нт)
3. Ch(r;A1=d1,A2=d2…An=dn; C1=l1,…,Cp=lp).
Ch(рейсы;№=736,чет=нт,Вр_выл=13.10).
Реляционные операторы.
- это операторы над отношениями. Рассмотрим операторы над отношениями с одинаковой схемой (r(R),s(R)):
а) Пересечение , в q кортежи, которые принадлежат и r и s
б) Объединение Кортежи в 1-й или во 2-й.
в) Разность r-s=q2(R)
dom(R) – домен – множество всех кортежей над атрибутами схемы R и их доменами.(кортежи появляются комбинированием доменов Ai (domA1)).
|
|
Пример:
dom | (ABC) | domA | domB | domC | |
a1b1c1 | a1 | b1 | c1 | ||
a1b2c1 | a2 | b2 | |||
a2b1c1 | |||||
a2b2c1 |
Dom(R)=dom(ABC)
г) Дополнение ř=dom(R)-r. (Некоторые домены могут иметь бесконечное число записей, и это связано с точностью измерения) следовательно, существуют активный домен и активное дополнение.
Активный домен Ai отношения r –
Adom(R,r) – множество всех кортежей над атрибутами схемы R и их доменами.
Активное дополнение. ř=adom(R,r)-r.
Если множество значений в домене конечное, то активный домен не нужен.
д) Выбор.
Пример:
е) Проекция
получено вычёркиванием столбцов соответствующих атрибутам в R –x и исключением из оставшихся столбцов повторяющихся строк.
Пример:
ж) Естественное соединение – комбинируется 2 отношения по всем их общим атрибутам.
Отношения – r(R),s(S)
Пример: ,
з) Деление. r’ = r ÷ s. ,
r ÷ s =
Пример: право управления:
Пилот | Тип самолёта |
Е Е Е О О |
, право ÷
, право ÷
и) Постоянные отношения. (const в программах). Кортежи, которые не меняются – постоянные кортежи. <C1:A1,C2:A2,…>
(<E:Пилот><707:номер самолёта>)
Постоянные отношения – множество постоянных кортежей.
к) Переименование атрибутов. δA=B(r). Имя атрибута A будет заменено на B.
л) Эквисоединение. Соединение по условию: r[условие]r – условие только типа равенство.
м) Тетта – соединение (Θ – соединение).
r[A ΘD]r – условие – любой оператор сравнения(=,<,>,…)
δAΘB(r) – расширенный оператор выбора.
Реляционная алгебра.
Все вышеперечисленные операторы вместе с регулярными и постоянными отношениями относятся к реляционной алгебре, и любые правильно выполненные построения с их помощью – алгебраические.
Операторы, не вошедшие в реляционную алгебру (дают два отношения):
1) Оператор расщепления.
SPLITβ(r)
β(t) – предикат(результат – либо истина, либо ложь).
Пример:
список | (сотрудники, | Пол, | Курящий) |
Иванов Петров Петрова Сидоров Попов Попова | М М Ж М М Ж | Да Да Да Нет Нет Нет |
β(t) =(t(пол)=М и t(кур)=да)
список | (сотрудники, | Пол, | Курящий) |
Иванов Петров | М М | Да Да |
SPLIT β(список)=
Получаем два отношения – (S,S’).
Список’ | (сотрудники, | Пол, | Курящий) |
Петрова Сидоров Попов Попова | Ж М М Ж | Да Нет Нет Нет |
2) Фактор.
r(R) b1,b2,….,bm R,
Factor (r; b1,b2,….,bm; L) – оператор, который удаляет столбцы, соответствующие b1,b2,….,bm из отношения R с целью образования нового отношения и добавлением в новое отношение и в R специального столбца L, причём по L осуществляется соединение.
Список1 | (сотр., | L) |
Иванов Петров Петрова Сидоров Попов Попова |
Пример:
Список2 | (L | Пол, | Кур.,) |
М М Ж Ж | Да Нет Да Нет |
Factor (список; пол, кур;L)
Легко проверить, что:
список =
Функциональные зависимости.
- Один из способов установления зависимостей между данными.
В реальных таблицах существуют ограничения на данные. Пусть существуют ограничения на график.
График | (Пилот, | Рейс, | Дата, | Вр.выл) |
Y Y L L L I I A A A | 9авг. 10авг. | 10.15 13.25 5.50 18.35 10.15 10.15 13.25 5.50 5.50 13.25 |
Не любое сочетание дата – время допустимо. Ограничения:
1. Для каждого рейса – одно время вылета
2. Для данного пилота, даты и времени вылета – один рейс
3. Для данного рейса – один пилот
- примеры функциональной зависимости. Функциональная зависимость имеет место тогда, когда значение кортежа на одном множестве атрибутов единственным образом определяет значение картежей на другом множестве атрибутов.
1. Рейс→Вр_Выл
2. Пилт Дата Вр_Выл → Рейс
3. Рейс Дата → Пилот
В ТРБД пробел означает объединение.
Опр. Функциональная зависимость (F-зависимость)
r(R) x,yR
r удовлетворяет зависимости x→y если имеет не более 1 кортежа для любого значения x. (Если заданно отношение r, то y функционально зависит от x когда каждое значении x в R связанно только с одним значением в y.
|
|
Опр. Полная функциональная зависимость. y находится в полной функциональной зависимости от x, если он функционально зависит от x и не зависит функционально от любого подмножества x.
Для проверки функциональной зависимости используется алгоритм Satisfies(r;x→y).
Вход алгоритма –r, x→y
Выход алгоритма – И (удовл.) или Л (не удовл.)
Шаги алгоритма:
1) Пересортируем r по x – столбцам, чтобы строки с равными значениями стояли рядом.
2) Если любая совокупность кортежей с каждыми x- значениями имеет также равные y-значения, то на выходе получаем Истину, иначе – Ложь.
Пример: Satifies (график; Рейс→Вр_Выл).
Все сходятся, истина.
Функциональная зависимость определяет семантику данных.
НФ – ограничение на схему БД, которое избавляет БД от некоторых нежелательных свойств.
Схема БД (R) – множество схем – отношений, входящих в БД: R ={R1,R2,…,Rm}.
Общее правило: Если БД находится в НФ, то и все отношения находятся в НФ.
1НФ. R находится в первой нормальной форме, если значения в доменах Ai являются атомарными для каждого атрибута.
Пример1. (Имя Дата_рожд Знак_Зодиака)
День месяц →знак_зодиака (дата рождения – день, месяц, год – не атомарная)
Пример2. (Автор Книга Год) – Автор – неатом.
2НФ. Пример:
График | (Рейс, | Дата, | Пилот, | Галерея) |
6.06 7.06 9.06 | Иванов Петров Иванов |
F={рейс→галерея}
Меняем 3 на 4 (галерея 3 на ремонте) много изменения – аномалия.
Противоречие:
Опр. Схема отношения R находится во второй НФ относительно множества функциональных зависимостей F, если она находится в 1НФ и любой атрибут полностью зависит от любого ключа для R.
Схема БД R находится во 2-й НФ относительно F, если любая сема отношения R находится во 2НФ.
Алгоритм устранения:
1. Определить ключ;
2. определить множество функциональных зависимостей из схемы БД.
3.
Галерея_график(Рейс галерея), пилот_галерея (Рейс Дата Галерея), тогда R ={R1,R2} – во 2НФ.
|
|