2015-06-22 2 views
1

Я просто читал определение 3NF в СУБД, в нем говорится, что:Третья нормальная форма в СУБД

Функциональная зависимость X -> A допускается, если: 1. X является супер ключ. 2. A является частью некоторого ключа.

У меня 2 сомнения:

а: Я не понимаю точку, как это второе условие полезно для удаления anomalies.Why имеют форму BCNF, вместо этого мы можем определить 3NF формы не имеют 2-й состояние.

Я получаю смысл удалить транзитивную зависимость. Если Y -> Z и X - первичный ключ. Тогда существует транзитивная зависимость, поскольку X -> Y -> Z означает, что мы не можем хранить значения (X, Y), если не знаем Z.

b: Пожалуйста, объясните, как удаление 2-го условия в 3NF устранить аномалии и/или ограничить избыточность.

ответ

1

«Функциональная зависимость X -> A разрешена, если: 1. X является супер-ключом. 2. A является частью некоторого ключа».

второе состояние вашего определения является неправильно. A должен быть нецелевым атрибутом (т. Е. Он не должен быть частью ключа для удовлетворения 3NF).

На самом деле лучший способ понять 3NF это -
дана функциональная зависимость X->YеслиY является не-премьер атрибут, то Xдолжен бытьсуперключ.
(Обратите внимание, что эта обеспечивает не переходную зависимости)

С другой стороны BCNF IS-
для каждый функциональная зависимость X->Y левая рука (X) должен бытьсуперключ (правая сторона (Y) является простой или не совсем простой)

N ow для вашего первого сомнения

«Почему у нас есть форма BCNF, вместо этого мы можем определить форму 3NF, чтобы не иметь 2-го условия?» Да, если вы удаляете второе условие 3NF (то есть Y должно быть несимметричным) то это эквивалентно BCNF. Но почему вы хотите это сделать?Бывают случаи, когда вы не можете уменьшить отношение к BCNF (, потому что не всегда можно получить разложение BCNF, сохраняющее зависимость,), а затем уменьшить его до 3NF, по крайней мере, лучше, чем позволить ему быть в 2NF

Например -

R=(J,K,L) 
F={JK->L,L->K} 

Здесь мы имеем 2 кандидатские ключи - JK и JL и R находится не в BCNF. Любое разложение R не сможет сохранить JK->L. Это означает, что для тестирования для JK->L требуется соединение. Таким образом, существуют ситуации, в которых -

  • BCNF не DEPENDENCY сохранения и
  • эффективной проверки за нарушение функциональной зависимости от обновлений важно

Решение: определить слабую нормальную форму, называемую 3NF , В 3NF всегда есть разложение без потерь, объединение, сохраняющее зависимость.

Я не получить второй сомнение - «как ... 3NF устранит аномалии и/или ограничить избыточность». 3NF удалит избыточную покупку, удалив любую транзитивную зависимость!

This может также помочь.

Смежные вопросы