Нормализация базы данных - 4NF

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

Связь

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

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

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

Благодарю.

1 ответ

В целом зависимости описывают важные ограничения на данные, например, функциональную зависимость 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),

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

Другие вопросы по тегам