2013-09-11 2 views
2

Есть много связанных вопросов на SO, но ни один, что я могу найти этот ответ на этот вопрос:BCNF против технических вопросов 3NF

не Можно ли иметь 3NF отношение, которое может быть без потерь присоединиться разложены на BCNF при сохранении зависимостей?

Я знаю, что вы можете разложить отношение 3NF к BCNF, если вы готовы ослабить одну или несколько зависимостей. И Бери и Бернштейн доказали, что FDs формы {AB-> C, C-> B} дают отношение 3NF, которое нельзя свести к BCNF. Но есть ли даже случай, когда вы находитесь в 3NF, и вы можете уменьшить до BCNF?

Для получения дополнительных неофициальных ботанических точек, я хотел бы знать хороший термин для зависимостей, разрешенных 3NF, но не BCNF? Так легко различать 1NF, 2NF и 3NF на основе частичных и транзитивных зависимостей, но, на мой взгляд, половина проблемы с BCNF - это простое имя для типа запрещенной зависимости.

ответ

1

Но есть даже случай, когда вы находитесь в 3NF, и вы можете свести к BCNF?

Да. Wikipedia has an example.

 
Court Start Time End Time Rate Type 
-- 
1  09:30  10:30  SAVER 
1  11:00  12:00  SAVER 
1  14:00  15:30  STANDARD 
2  10:00  11:30  PREMIUM-B 
2  11:30  13:30  PREMIUM-B 
2  15:00  16:30  PREMIUM-A 

Функциональные зависимости для этого примера не указаны, но вы можете их получить. Я перечислил FD ниже.

 
AB->CD 
AC->BD 
BD->AC 
CD->AB 
ABC->D 
BCD->A 
ABD->C 
ACD->B 
D->A 

Для дополнительных неофициальных точек кретина, я хотел бы знать, хороший термин для зависимостей допускается 3NF но не BCNF? , , , половина проблемы с BCNF - нет простого названия для типа запрещенной зависимости.

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

Ключами-кандидатам в статье в Википедии являются {AB, AC, BD, CD}. Начальное соотношение не относится к BCNF из-за функциональной зависимости D-> A. Определитель , что FD, D, не является ключом-кандидатом.

+0

Да, этот пример, безусловно, 3NF. Однако разложение на BCNF связано с ловкостью руки, введя дополнительное поле 'Member'. Если это поле было включено в исходную схему, я уверен, что она больше не будет в 3NF. (Я оставлю это как упражнение, поскольку я мог бы установить его как деятельность для своих собственных учеников) – beldaz

+0

Нормализация через BCNF никогда * не требует * введения новых столбцов, правильно? –

+0

Ну, по крайней мере, для _decomposition_, вы должны иметь одинаковый набор атрибутов как в начальной, так и в конце схемы. _Normalization_ - процесс перехода в более высокую нормальную форму посредством разложения. – beldaz