ТОРА (9) - Лекция №8 - Алгоритм (продолжение): различия между версиями

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
мНет описания правки
мНет описания правки
Строка 146: Строка 146:


Сравнивая результаты [[ТОРА (9) - Лекция №7 - Алгоритм (продолжение)#Пример 1 | Примера 1]] и [[#Пример 2 | Примера 2]], видим, что алгоритм синтеза даёт меньшее число схем отношений.
Сравнивая результаты [[ТОРА (9) - Лекция №7 - Алгоритм (продолжение)#Пример 1 | Примера 1]] и [[#Пример 2 | Примера 2]], видим, что алгоритм синтеза даёт меньшее число схем отношений.
== Оптимизация SQL-запросов ==
Запрос, поступающий в СУБД, подвергается оптимизации с целью уменьшения времени его выполнения.
Шаги оптимизатора:
# строится логический план выполнения запроса (дерево логических операций);
# на основе логического плана строится физический план выполнения запроса (дерево физических операций);
# реализация этого физического плана.
=== Законы реляционной алгебры ===
==== Закон коммутативности декартова произведения отношений ====
{{Формула|f=R_1\times R_2 = R_2\times R_1}}, здесь и далее {{Формула|f=R_1}} и {{Формула|f=R_2}} - экземпляры отношений.
==== Закон ассоциативности декартова произведения ====
{{Формула|f=(R_1\times R_2)\times R_3 = R_1\times (R_2\times R_3)}}
==== Закон каскада проекций ====
Допустим, {{Формула|f=(a_1 ... a_n)\subseteq (b_1 ... b_n)}}, {{Формула|f={a_i} }}, {{Формула|f={b_i} }} - {{Формула|f=R}}
тогда {{Формула|f=\Pi_{a_1 ... a_n}(\Pi_{b_1 ... b_n}(R)) = \Pi_{a_1 ... a_n}(R)}}
==== Закон каскада селекций ====
Допустим, {{Формула|f=F = f_1\bigwedge f_2}}
тогда {{Формула|f=\sigma_F(R) = \sigma_{f_1}(\sigma_{f_2}(R))}}
==== Закон перестановки проекции и селекции ====
1)
: Допустим, в условия поиска {{Формула|f=F}} входят атрибуты только из множества {{Формула|f=a_1 ... a_n}}
: тогда {{Формула|f=\Pi_{a_1 ... a_n}(\sigma_F(R)) = \sigma_F(\Pi_{a_1 ... a_n}(R))}}
2)
: Допустим, в условия поиска {{Формула|f=F}} входят атрибуты не только из множества {{Формула|f=a_1 ... a_n}}, но и из {{Формула|f=b_1 ... b_n}}
: тогда {{Формула|f=\Pi_{a_1 ... a_n}(\sigma_F(R)) = \Pi_{a_1 ... a_n}(\sigma_F(\Pi_{a_1 ... a_n, b_1 ... b_n}(R)))}}
{{Forward|l=ТОРА (9) - Лекция №9 - Оптимизация запросов}}


[[Категория:Теоретические основы реляционной алгебры (9 семестр)]]
[[Категория:Теоретические основы реляционной алгебры (9 семестр)]]
[[Категория:Конспекты лекций и семинаров]]
[[Категория:Конспекты лекций и семинаров]]

Версия от 13:47, 29 октября 2012

...начало

Практические приёмы нормализации

Пример 1

Поэтому вновь перестроим схему:

Указанная схема имеет два недостатка:

  1. в ключи $$R_3$$, $$R_1$$ и $$R_4$$ входят атрибуты предметной области. При изменении формата табельного номера придётся обновить его R_1 и через CASCADE в $$R_3$$ и $$R_4$$. Поэтому всегда желательно иметь синтетические ключи - не связанные с предметной областью (ID);
  2. в сущностях $$R_2$$ и $$R_5$$ ключи составные. Это увеличивает размер индекса и время поиска по этому индексу.

В силу этого, схему БД предлагается реорганизовать следующим образом (ввести синтетические ключи):

Пример 2

Разработать схему БД для предыдущего примера с применением алгоритма синтеза.

$$U$$ = (табельный номер, ФИО, должность, оклад, номер заказа, сведения о заказе) = $$(A_1, A_2, A_3, A_4, A_5, A_6)$$

$$F = (A_1\rightarrow A_2, A_3\rightarrow A_4, A_5\rightarrow A_6)$$

Синтез:

1)

$$УНП = (A_1\rightarrow A_2), A_3\rightarrow A_4, A_5\rightarrow A_6$$

2)

$$U\rightarrow\varnothing$$
в УНП нет ФЗ, включающей все атрибуты из $$U$$. Поэтому добавляем в УНП тривиальную ФЗ:
$$УНП = (A_1\rightarrow A_2), A_3\rightarrow A_4, A_5\rightarrow A_6, A_1 A_2 A_3 A_4 A_5 A_6\rightarrow\varnothing$$

3)

все нетривиальные ФЗ в УНП являются неприводимыми (в левой части один атрибут). Поэтому шаг пропускаем.

4)

разбиваем УНП на классы ФЗ:
  1. $$A_1\rightarrow A_2$$, $$K_1 = A_1 A_2$$
  2. $$A_3\rightarrow A_4$$, $$K_1 = A_3 A_4$$
  3. $$A_5\rightarrow A_6$$, $$K_1 = A_5 A_6$$
  4. $$A_1 A_2 A_3 A_4 A_5 A_6\rightarrow\varnothing$$, $$K_1 = A_1 A_2 A_3 A_4 A_5 A_6$$

5)

строим граф иерархии:

6)

пропускаем, так как в каждом классе только одна ФЗ.

7)

выполняем редуцирование атрибутов в правой части ФЗ:

8)

пропускаем, так как в графе иерархии нет ФЗ, кроме $$U\rightarrow\varnothing$$

9)

$$\rho = (A_1 A_3 A_5, A_1 A_2, A_3 A_4, A_5 A_6)$$

10)

1) соединение без потерь
$$A_1$$ $$A_2$$ $$A_3$$ $$A_4$$ $$A_5$$ $$A_6$$
$$R_1$$ $$a$$ $$b_1$$ $$a$$ $$b_1$$ $$a$$ $$b_1$$
$$R_2$$ $$a$$ $$a$$ $$b_2$$ $$b_2$$ $$b_2$$ $$b_2$$
$$R_3$$ $$b_3$$ $$b_3$$ $$a$$ $$a$$ $$b_3$$ $$b_3$$
$$R_4$$ $$b_4$$ $$b_4$$ $$b_4$$ $$b_4$$ $$a$$ $$a$$
$$A_1$$ $$A_2$$ $$A_3$$ $$A_4$$ $$A_5$$ $$A_6$$
$$R_1$$ $$a$$ $$a$$ $$a$$ $$a$$ $$a$$ $$a$$
$$R_2$$ $$a$$ $$a$$ $$b_2$$ $$b_2$$ $$b_2$$ $$b_2$$
$$R_3$$ $$b_3$$ $$b_3$$ $$a$$ $$a$$ $$b_3$$ $$b_3$$
$$R_4$$ $$b_4$$ $$b_4$$ $$b_4$$ $$b_4$$ $$a$$ $$a$$
Получили строку, сплошь состоящую из $$a$$. Значит, есть соединение без потерь. Запрос на соединение всех четырёх таблиц будет выполняться правильно.
2) сохранение ФЗ:
1-4) $$H = \varnothing$$, $$УНП = (A_1\rightarrow A_2, A_3\rightarrow A_4, A_5\rightarrow A_6)$$
5) $$H$$ - пусто.
6) обладает сохранением ФЗ. При включении новой записи в таблицу достаточно проверять справедливость тех ФЗ, которые связаны с этой таблицей.
3) каждая схема отношения находится в 3НФ. Вот так.

А находятся ли схемы отношений $$R_1, R_2, R_3, R_4$$ в нормальной форме Бойса-Кодда?

$$R_1$$:

$$R_1 = A_1 A_3 A_5$$, $$A_1 A_3 A_5$$ - ключ, значит находится в НФБК.

$$R_2$$:

$$R_2 = A_1 A_2$$, $$A_1\rightarrow A_2$$, $$A_1$$ - ключ, значит находится в НФБК.

$$R_3$$:

$$R_4 = A_3 A_4$$, $$A_3\rightarrow A_4$$, $$A_3$$ - ключ, значит находится в НФБК.

$$R_4$$:

$$R_4 = A_5 A_6$$, $$A_5\rightarrow A_6$$, $$A_5$$ - ключ, значит находится в НФБК.

В конце концов, получаем такую схему БД:

Но у неё тоже есть недостатки:

  1. ключ в $$R_1$$ составной;
  2. в ключах $$R_2, R_3, R_4$$ используются атрибуты предметной области.

Перестроим схему с синтетическими ключами:

Сравнивая результаты Примера 1 и Примера 2, видим, что алгоритм синтеза даёт меньшее число схем отношений.