ТОРА (9) - Лекция №7 - Алгоритм (продолжение)

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

...начало

Алгоритм синтеза "хорошей" БД

Пример

7) редуцирование атрибутов справа ФЗ, расположенной по иерархии выше

вычёркиваем в графе $$A$$

8)

нет ФЗ с пустой правой частью, потому шаг пропускаем.

9)

$$\rho = (AB, BCD) = (R_1, R_2)$$

10)

проверяем
  • соединение без потерь
$$F = (A\rightarrow B, B\rightarrow A, AC\rightarrow D, BC\rightarrow D)$$
$$A$$ $$B$$ $$C$$ $$D$$
$$AB$$ $$a$$ $$a$$ $$b_1$$ $$b_1$$
$$BCD$$ $$b_2$$ $$a$$ $$a$$ $$a$$
$$A$$ $$B$$ $$C$$ $$D$$
$$AB$$ $$a$$ $$a$$ $$b_1$$ $$b_1$$
$$BCD$$ $$a$$ $$a$$ $$a$$ $$a$$
Значит, $$\rho$$ обладает сохранением без потерь.
  • сохранение ФЗ
1-4)
$$H = \varnothing$$, $$УНП = (A\rightarrow B, B\rightarrow A, AC\rightarrow BD, BC\rightarrow AD)$$
$$H = (AC\rightarrow BD, BC\rightarrow A)$$
5)
$$H\neq\varnothing$$
6)
выполняется ли $$AC\rightarrow BD\in(A\rightarrow B, B\rightarrow A, BC\rightarrow D)^+$$?
$$(AC)^+ = ACBD$$, $$BD\subset(AC)^+$$
выполняется ли $$BC\rightarrow A\in(A\rightarrow B, B\rightarrow A, BC\rightarrow D)^+$$?
$$(BC)^+ = BCAD$$, $$A\subset(BC)^+$$
значит, $$\rho$$ обладает сохранением ФЗ.
На практике, частно пренебрегают свойством сохранения ФЗ, если в БД вводятся правильные данные - не надо проверять, противоречат ли эти данные исходной ФЗ.

Таким образом, $$\rho$$ обладает:

  • обладает соединением без потерь;
  • обладает сохранением ФЗ;
  • точно находится в 3НФ.

Но мы всё равно проверим, находятся ли $$R_1$$ и $$R_2$$ в 3НФ Бойса-Кодда:

$$R_1 = AB$$:
$$A\rightarrow B$$, $$B\rightarrow A$$
здесь $$A$$ - ключ и $$B$$ - ключ.
значит, находится в НФ.
$$R_2 = BCD$$:
$$BC\rightarrow D$$
$$BC$$ - ключ.
значит, находится в НФ.

Преимущество и недостатки алгоритма

Преимущество

Алгоритм определяет стандартную (математическую) процедуру построения схемы БД.

Недостатки

  • очень трудно определить всё множество ФЗ, а алгоритм критичен к набору этих ФЗ. В приципе, надо строить абстрактный экземпляр отношений (семинар №2), но надо знать и предметную область;
  • при увеличении числа ФЗ возможно увеличение сложности вычисления алгоритма.

Эти недостатки сдерживают применение алгоритма на практике.

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

Кроме алгоритма есть практические приёмы нормализации схемы отношений.

Нормальные формы

1НФ

Отношение находится в 1НФ, если все его атрибуты атомарны, то есть ни один из его атрибутов нельзя разделить на более простые атрибуты, которые соответствуют каким-то другим свойствам описываемой сущности.

Также схема отношений находится в 1НФ, если не содержит таблицу или вектор в явном виде. Поэтому, если таблица скрыта в объекте, то схема будет в 1НФ.

Ясно, что отношение, находящееся в 1НФ, также может обладать избыточностью. Для её устранения предназначена вторая нормальная форма.

2НФ

Отношение находится во второй нормальной форме (сокращённо 2НФ) тогда и только тогда, когда оно находится в первой нормальной форме и каждый его неключевой атрибут неприводимо зависим от первичного ключа.

Схема отношений находится в 2НФ, если не существует ключа $$X$$, подмножества атрибутов $$Y\subset X$$ и непервичного атрибута $$H$$, для которых выполняются условия:

  • $$X\rightarrow Y$$;
  • $$Y\rightarrow H$$;
  • $$Y\nrightarrow X$$.

$$A_1\rightarrow A_i ... A_j$$

$$X = A_1 A_2$$, $$Y = A_1\subset X$$, $$H\in(A_i ... A_j)$$:

1) $$X\rightarrow Y$$, так как $$A_1 A_2\rightarrow A_1$$
2) $$Y\rightarrow H$$, так как $$A_1\rightarrow A_i ... A_j$$
3) $$Y\nrightarrow X$$, так как $$A_1^+ = A_1 A_i ... A_j$$, $$X\nsubseteq Y^+$$

3НФ

Подробнее на лекции №5.

$$A_2\rightarrow A_i ... A_j$$

$$X = A_1$$, $$Y = A_2$$, $$H\in(A_i ... A_j)$$:

1) $$X\rightarrow Y$$, так как $$A_1\rightarrow A_2$$
2) $$Y\rightarrow H$$, так как $$A_2\rightarrow A_i ... A_j$$
3) $$Y\nrightarrow X$$, так как $$A_2^+ = A_2 A_i ... A_j$$, $$X = A_1\notin Y^+$$

Пример 1

$$R$$ - схема отношения "Сотрудники".

$$A_1$$ табельный номер
$$A_5$$ номер заказа
$$A_2$$ ФИО
$$A_3$$ должность
$$A_4$$ оклад

ФЗ:

$$A_1 A_5\rightarrow A_2 A_3 A_4$$
$$A_1\rightarrow A_2 A_3 A_4$$
$$A_3\rightarrow A_4$$

Покажем, что эта схема не находится в 2НФ:

Можно найти ключ $$X = A_1 A_5$$, $$Y = A_1\subset X$$, $$H\notin Y$$, $$H\in(A_2, A_3, A_4)$$:

1) $$X\rightarrow Y$$
2) $$Y\rightarrow H$$
3) $$Y\nrightarrow X$$

$$R_1$$ тоже не находится во 2НФ, потому что $$X = A_1$$, $$Y = A_3$$, $$H = A_4$$:

1) $$X\rightarrow Y$$
2) $$Y\rightarrow H$$
3) $$Y\nrightarrow X$$

Предположим, вдруг оказалось, что сотрудник может занимать несколько должностей, и ещё теперь в таблице надо хранить сведения о заказе. В этом случае схема преобразуется к следующему виду:

Но анализ показывает, что в этом случае таблицы $$R_1$$ и $$R_2$$ не находятся в 2НФ:

$$R_1$$:

$$A_1\rightarrow A_2$$, $$X = A_1 A_3$$, $$Y = A_1\subset X$$, $$H = A_2$$
1) $$X\rightarrow Y$$, так как $$A_1 A_3\rightarrow A_1$$
2) $$Y\rightarrow H$$, так как $$A_1\rightarrow A_2$$
3) $$Y\nrightarrow X$$, так как $$Y^+ = A_1 A_2$$, $$X\nsubseteq Y^+$$

$$R_2$$:

$$A_5\rightarrow A_6$$, $$X = A_1 A_3 A_5$$, $$Y = A_5\subset X$$, $$H = A_6$$
1) $$X\rightarrow Y$$, так как $$A_1 A_3 A_5\rightarrow A_5$$
2) $$Y\rightarrow H$$, так как $$A_5\rightarrow A_6$$
3) $$Y\nrightarrow X$$, так как $$Y^+ = A_5 A_6$$, $$X = A_1 A_3 A_5\nsubseteq Y^+$$

продолжение...