Нормализация базы данных - 4NF - PullRequest
0 голосов
/ 26 января 2019

У меня есть следующее отношение, и мне нужно нормализовать его до 4NF.

Отношение

Сначала я попытался найти все FD и MVDэто держать.

AB ->> C (MVD)
C -> D (FD)  
D -> E (FD)
ABC -> F (FD)

Далее, используя эти зависимости, мне удалось найти ключ-кандидат: ABC.Дайте мне знать, правильно ли то, что я сделал до сих пор.Кроме того, нормально ли иметь многозначную зависимость в 4NF?Как AB ->> C и ABC -> F?

Спасибо.

1 Ответ

0 голосов
/ 26 января 2019

В общем случае зависимости описывают важные ограничения на данные, например, функциональная зависимость X → A означает, что определенное значение X однозначно определяет определенное значение A (то есть каждый раз, когда мы находим в кортеже определенное значение X, мы всегда находим одно и то же значение A). Такие виды ограничений не могут быть выведены из (нескольких) строк таблицы, в которых неизвестно значение данных.

В лучшем случае мы можем вывести набор возможных функциональных зависимостей, содержащихся в этом конкретном экземпляре таблицы, надеясь (но без какой-либо конкретной причины), что эти функциональные зависимости будут удерживайте каждый экземпляр таблицы, что является единственным условием, для которого мы можем «нормализовать» отношение (а не просто найти не избыточный способ хранения конкретного экземпляра этой таблицы).

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

F → AB
E → AD
D → AE
C → ADE
B → A
EF → ABCD
DF → ABCE
CF → ABDE
CB → ADEF

(хотя ABC → F может быть получено из CB → ADEF, а AB →→ C не имеет места).

И если мы должны применить алгоритм нормализации к этому экземпляру (например, алгоритм синтеза для 3NF), мы разложим отношение в преувеличенном количестве подсхем:

R1(AB), R2(BCF), R3(CD), R4(ADE), R5(CEF),

пять отношений для таблицы с шестью атрибутами!

...