Пример аномалий у 3НФ

R =(A, B, C, D) и F =(AB, BA, ACD)

Два ключа:

первый - AC:

(AC)+= ACBD = R

A += ABR

C += CR

второй - BC:

(BC)+= BCAD = R

B += BAR

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

1)

неключевой атрибут H, H = D

2)

YH, HY, Y = AC

3)

X = BC, X = AC

Нельзя подобрать нужную тройку, потому R находится в 3НФ. Однако, отношение всё равно обладает аномалиями:

  • избыточности: наименование поставщика повторяется для каждой поставляемой делали;
  • противоречивости при изменении наименования поставщика надо изменить его во всех записях, куда оно входит;
  • включения: нельзя включить информацию о поставщике, если он ничего не поставляет;
  • удаления: при удалении детали удаляется информация о поставщике.

Для устранения этого вводится усиленная 3НФ - Бойса-Кодда.

Нормальная форма Бойса-Кодда

ФЗ XY является неприводимой, если для любого подмножества ZX выполняется ZY или ZYF +

Пусть есть отношение R и F включает в себя нетривиальные неприводимые ФЗ. Тогда отношение R находится в нормальной форме Бойса-Кодда, если для любого XYF => X - ключ.

Пример:

R 1= AB, F 1=(AB, BA), A - ключ, B - ключ.

или

R 2= ACD, F 2=(ACD), AC - ключ.

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

Пусть U - универсальная схема отношения (множество всех атрибутов предметной области) и F - множество ФЗ.

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

Алгоритм:

  1. построить УНП для F;
  2. если среди ФЗ в УНП нет ФЗ, включающей все атрибуты из U, то добавить в УНП тривиальную ФЗ U →∅. Выполнение этого шага почти всегда обеспечивает свойство соединения без потерь будущей схемы БД;
  3. привести все нетривиальные ФЗ из УНП к неприводимому виду (удалить лишние атрибуты в левых частях ФЗ);
  4. разбить полученное множество ФЗ УНП на классы эквивалентности. Две зависимости XiYi и XjYj будем называть эквивалентными, если XiYi = XjYj. Далее введём обозначение Kr = XiYi - множество атрибутов в левой и правой частях ФЗ r -того класса эквивалентности;
  5. построить граф иерархии полученных на предыдущем шаге классов эквивалентности (если это возможно). Правило построения: j -ый узел соединяем снизу с i -ым узлом, если KjKi. В каждом узле записываются все ФЗ, соответствующего класса эквивалентности;
  6. из каждого класса эквивалентности в графе иерархии оставить только одну ФЗ. Правила выбора:
    1. удалить из класса эквивалентности лишние ФЗ;
    2. если в классе эквивалентности осталось больше одной ФЗ, то выбрать ФЗ с меньшим числом атрибутов в левой части;
    3. если у оставшихся ФЗ число атрибутов в левой части одинаково, то выбрать ту ФЗ, которая позволит редуцировать (вычеркнуть) атрибуты справа у ФЗ, расположенных выше в графе иерархии;
    4. если в результате не удалось выбрать ни одной, то выбрать произвольную;
  7. редуцировать атрибуты справа в оставшихся ФЗ. Для этого просмотреть каждый путь снизу вверх в графе иерархии. Двигаясь по выбранному пути, выполнить следующие действия в каждом узле пути:
    1. пусть XY - это ФЗ, записанная в данном узле. Каждый атрибут, принадлежащий правой части, вычеркнуть в правых частях ФЗ, расположенных в узлах этого пути по иерархии выше;
    2. для тривиальной ФЗ U →∅ атрибуты вычёркиваются слева;
  8. исключить из рассмотрения ФЗ с пустой правой частью (кроме редуцированной ФЗ U →∅). Исключённые на этом шаге ФЗ являются лишними и выводятся из оставшихся;
  9. каждую оставшуюся в графе иерархий ФЗ VW заменить на множество VW. Получившееся множество схем отношений обозначить как ρ;
  10. для полученной на предыдущем шаге схемы БД проверить:
    1. обладает ли она свойством соединия без потерь. Если не обладает, то добавить ключ универсальной схемы U в эту схему;
    2. обладает ли ρ свойством сохранения ФЗ. Если нет, то, использовать зависимости, не вошедшие в проекцию XY ∉Π Ri (F), для построения новых схем отношений, то есть добавить в ρXY.

После выполнения всех шагов полученная схема ρ:

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

Пример

U =(поставщик,фирма,деталь,количество)=(A, B, C, D)

F =(AB, BA, ACD, BCD)

Строим ρ:

1)

УНП=(AB, BA, ACBD, BCAD)

2)

пропускаем этот шаг, так как есть ФЗ (даже не одна), включающая все атрибуты из U

3)

уменьшить число атрибутов не удаётся

4)

1 класс: AB, BA, K 1= AB

2 класс: ACBD, BCAD, K 2= ABCD

5)

6)

для K 2:

способ 1 - как во втором семинаре

можно ли вывести ACBD ∈(BCAD)+?

(AC)+= AC, BD ⊈(AC)+, значит нельзя

можно ли вывести BCAD ∈(ACBD)+?

(BC)+= BC, AD ⊈(BC)+, значит нельзя

способ 2 - вычеркнуть из правых частей ФЗ рассматриваемых классов эквивалентностей общие атрибуты. Если получаются ФЗ с пустой правой частью, то они являются лишними.

ACB

BCA

выше по иерархии ничего нет, выбираем BCAD

нет лишних ФЗ, потому...


 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: