3NF Нормальная форма - PullRequest
       10

3NF Нормальная форма

1 голос
/ 24 сентября 2011

У меня вопрос по поводу 3NF нормальной формы:

Normalize, with respect to 3NF, the relational scheme E(A, B, C, D, E, F) 
by assuming that (A, B, C) is the unique candidate key and that the following additional functional dependencies hold: 
    A,B -> D 
    C,D -> E 
    E -> F 

Насколько я понимаю, если я применяю 3NF, который говорит, что схема является 3NF, если все атрибуты

не простые числа не зависят транзитивно от какого-либо ключевого кандидата, результат должен быть:

E '= (A, B, C, E, F), E' '= (B, D), E' '' = A, B, C, D, F), E '' '' = (D, E), E '' '' '' = (A, B, C, D, E),

E '' '' '' = (E, F)

но я думаю, что я не прав ...

Может кто-нибудь помочь разобраться в проблеме?

Спасибо

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Когда дело доходит до правильной нормализации, ничто не заменит понимание формальных определений. Если вы все еще работаете над созданием этого понимания, есть симпатичная маленькая мнемоника, которую люди используют, чтобы помочь вспомнить суть 3NF и оценить, является ли таблица, на которую они смотрят, 3NF или нет.

"Ключ, весь ключ и ничего, кроме ключа, поэтому помогите мне Кодд ."

Как ты это применяешь? Каждый атрибут отношения должен зависеть от ключа. Он должен зависеть от ключа целом . Я не должен зависеть от того, что не является ключом. Когда вы смотрите на свой пример, ясно, что есть проблемы, и вам нужно нормализовать. Вам нужно добраться до точки, где каждый неключевой столбец, который нарушает 3NF, выходит за рамки вашего исходного отношения. Каждый из неключевых столбцов, D, E и F, все нарушают 3NF.

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

{ A B D} - это решает 3NF для атрибута D
{ C D E} - это решает 3NF для атрибута E
{ E F} - это решает 3NF для атрибута F

Что осталось скрыть от ваших исходных отношений? Ничего, кроме ключа-кандидата:

{ A B C }

1 голос
/ 24 сентября 2011

(переформатировано для удобства чтения)

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

  • E 1 = {A, B, C, E, F}
  • E 2 = {B, D}
  • E 3 = {A, B, C, D, F}
  • E 4 = {D, E}
  • E 5 = {A, B, C, D, E}
  • E 6 = {E, F}

3NF означает, что a) отношение находится в 2NF и b) каждый непростой атрибут напрямую зависит (то есть не является транзитивно зависимым) от каждого ключа-кандидата.

В свою очередь, 2NF означает, что a) отношение находится в 1NF, и b) каждый непростой атрибут зависит от всего ключа-кандидата, а не только от части ключа-кандидата.

Учитывая, что {ABC} является ключом-кандидатом, а учитывая, что {AB-> D}, вы можете видеть, что D зависит от части ключа-кандидата. Итак

  • E 0 = {A, B, C, D, E, F}

не в 2NF. Вы исправляете это, перемещая этот зависимый атрибут в новое отношение, и копируете атрибуты, которые определяют его, в то же отношение.

  • R 0 = { ABC DEF} Это отношение, с которого мы начали, а которое отсутствует в 2NF, исчезает и заменяется на

  • R 1 = { ABC EF}

  • R 2 = { AB D}

Вы хотите продолжить отсюда?

...