2016-05-02 4 views
0

У меня есть эта база данных:Правильный путь к нормализации базы данных в 3NF

R(A, B, C, D, E) 
Keys: A 
F = {A -> B, D -> E, C -> D} 

Я нормализуют его в 3NF так:

R(A, B, C, D, E) 
Keys: AD 
F = {AD -> B, AD -> E, C -> D} 

Что я делаю, когда я проверяю D -> E, D не является суперключем, а E не является ключевым атрибутом, поэтому я рассматриваю D и A как суперключ {AD}. Когда я проверяю C -> D, C не является ключом, но D является ключевым атрибутом, поэтому все в порядке.

Правильно ли я нормализуюсь?

ответ

1

В данных ввода есть проблема. Если отношение R имеет зависимости F = {A -> B, D -> E, C -> D}, то Aне может быть ключом. На самом деле, ключ представляет собой набор атрибутов, замыкание которого определяет все атрибуты отношения, которые не в данном случае, так как:

A+ = AB 

От F, (единственный) возможно ключ AC, на самом деле

AC+ = ABCD 

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

В вашем решении вы не разлагаете отношение, а изменяете только набор зависимостей с другими зависимостями, не подразумеваемыми первым набором.

Правильное разложение было бы вместо этого следующее:

R1 < (A B) , 
{ A → B } > 

R2 < (C D) , 
{ C → D } > 

R3 < (D E) , 
{ D → E } > 

R4 < (A C) , 
{ } > 

алгоритм для разложения соотношение в 3NF можно найти на любой хорошей книге по базам данных.