Нормализация базы данных - 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),
пять отношений для таблицы с шестью атрибутами!