Бойс-Кодд Нормальная форма
Я не понимаю нормальную форму Бойса-Кодда. Я посмотрел на свой учебник, но я не понимаю его. Скажем, отношение R = (A,B,C,D,E) и F={A->C, D->CB, AC->E}. Как вы определяете, находится ли R в BCNF? Нужна помощь. Спасибо!
2 ответа
Чтобы определить, является ли отношение BCNF, мы исследуем его функциональные зависимости.
Именно в BCNF, если для каждого FD X→Y мы имеем
- X → Y - тривиальная функциональная зависимость (Y ⊆ X)
- X - суперключ для схемы R.
FD являются A→C, D→CB, AC→E. Начнем с первого FD A → C.
A → C не является тривиальным, потому что C ∉ A. A→A является тривиальной зависимостью, например.
Теперь A → C суперключ? Чтобы проверить, что мы вычисляем замыкание левой части FD, в данном случае A. Замыкание - это все элементы, логически подразумеваемые как A. [A]+ = A ∪ C ∪ E = ACE или, таким образом, мы имеем A → ACE.
ACE не является суперключем, потому что он содержит все атрибуты отношения.
Таким образом, отношение не в BCNF, потому что A → C не является ни тривиальным, ни суперключом.
Есть и другие нарушения BCNF. [D]+ = BCD, который не является суперключем или тривиален. [AC]+ = ACE, который не является суперключом или тривиальным.
Надеюсь это поможет! Я думаю, что все правильно, но сейчас я готовлюсь к финалу и пытаюсь выучить много этого материала.
Неформально вы сначала идентифицируете все ключи-кандидаты. Затем вы смотрите на стрелки в функциональных зависимостях.
Если каждая стрелка является стрелкой из ключа-кандидата, она находится в BCNF.