0

Мне трудно понять 3 нормальную форму.Когда это будет в 3NF?

3 NF: 2 NF + Нет переходы

Так, например, для: Если у меня есть,

A -> B 
B -> C 

Тогда выше является своим родом переходных отношений и, следовательно, не будет в 3 NF ? Я правильно понимаю это?

Но в этом ответе What exactly does database normalization do?, по paxdiablo, он говорит,

Third normal form (3NF) - 2NF and every non-key column in a table depends on nothing but the key. В соответствии с этим, он будет в 3 НФ. Где я иду не так?

+0

Это одна из тех простых понятий, что тексты слишком сложны. Прочтите следующее: http://www.essentialsql.com/get-ready-to-learn-sql-11-database-third-normal-form-explained-in-simple-english/ –

+1

Является ли B ключевым столбцом или не? Если это не один из ключей-кандидатов, то B⟶C FD не зависит от ключа таблицы. Если это ключ-кандидат, то оба B⟶A и A⟶C также являются функциональными зависимостями (оба A и B являются ключами-кандидатами, поэтому оба определяют C, а каждый определяет другой), или A⟶B - это не ключевая зависимость. Если единственными функциональными зависимостями являются те, которые показаны, то вы не можете иметь как A, так и B - ключ-кандидат, поэтому отношение не может быть в 3NF или BCNF. –

+0

Каковы все столбцы вашего примера? Что такое * все * FD? Должны ли эти два быть минимальным покрытием? Т.е. есть ли в таблице ФД те, которые должны присутствовать, когда эти два? Эти два не могут быть * единственными *, потому что если эти FDs удерживают, то A ⟶ C также выполняется. – philipxy

ответ

0

Отношение находится в 3НФ, если она находится в 2НФ и:

  1. либо каждый атрибут зависит от ключа,
  2. или, если атрибут зависит от неключевых, то простое.

(будучи простым означает, что оно принадлежит ключу).

См., Например, Wikipedia.

Отношения в Boyce-Codd normal form, если только первое условие удержание, то есть:

  1. каждый атрибут зависит от ключевого

Таким образом, в вашем примере, если отношение имеет только три атрибута A, B и C и две зависимости, это не в 3NF, так как C не является простым и зависит от B, что не является ключом. С другой стороны, если есть другие атрибуты, а C является ключом или частью ключа, то он может быть в 3NF (но это зависит от других функциональных зависимостей, которые должны удовлетворять вышеуказанным условиям).

2НФ говорит, что каждый не-премьер атрибута зависит от каждого целом кандидата ключа, а не части его. Например, если отношение имеет атрибуты A, B и C, единственным ключом является AB и B -> C, то это отношение равно не в 2NF.

+0

Prime означает, что, например, в какой-то базе данных 'AB' окажется ключом кандидата, тогда' A' и 'B' будут правыми, верно? –

+0

Да, вы правы. BTW, чтобы узнать, является ли атрибут простым или нет, один из них знает каждый ключ-кандидат отношения. – Renzo

+0

Справа. Понял. Благодарю. Можете ли вы добавить аналогичную инструкцию для 2NF? Ваш самый ясный ответ, который я когда-либо видел. Еще раз спасибо. :) –

0

2-часть определения 3NF вы пытаетесь за это:

  • 2НФ трюмов и каждый не-премьер атрибут R не является транзитивно зависит от каждого суперключ. (X транзитивно определяет Z, когда существует Y, где X → Y и Y → Z ине Y → X.)

Другое определение 3NF является:

  • Для любого нетривиального FD X → Y, либо X является суперключ или атрибутами в Y, но не в X является простыми. (X → Y тривиально, когда Х содержит Y.)

Тогда BCNF является:

  • Для каждого нетривиального FD X → Y, Х представляет собой суперключ

См this answer ,

Если только ваши столбцы - это A, B и C, а ваши два FD - минимальная обложка, то единственным ключом-кандидатом являются A и C, зависит от не супер-клавиши, так что это не в 3NF (или BCNF).

Вы (ошибочно) используете термины так небрежно, что ваши предложения ничего не значит. Изучите термины и то, как они используются в своих определениях, чтобы ссылаться на различные вещи и использовать их таким образом в отношении соответствующих вещей. И получить свои определения из (авторитетного) учебника.