Технические вопросы BCNF против 3NF
Есть много связанных вопросов по SO, но ни один из них, который я могу найти, не отвечает на этот вопрос:
Возможно ли иметь отношение 3NF, которое можно объединить без потерь, разложить на отношения BCNF при сохранении зависимостей?
Я знаю, что вы можете разложить отношение 3NF на BCNF, если вы готовы ослабить одну или несколько зависимостей. И Бери, и Бернштейн доказали, что FD вида {AB->C, C->B} дают отношение 3NF, которое не может быть сведено к BCNF. Но есть ли даже случай, когда вы находитесь в 3NF, и вы можете перейти на BCNF?
Для дополнительных неофициальных баллов, я хотел бы знать хороший термин для зависимостей, разрешенных 3NF, но не BCNF? Очень легко различить 1NF, 2NF и 3NF на основе частичных и транзитивных зависимостей, но, на мой взгляд, половина проблемы с BCNF в том, что нет простого названия для типа запрещенной зависимости.
1 ответ
Но есть ли даже случай, когда вы находитесь в 3NF, и вы можете перейти на BCNF?
Время начала суда Время окончания Тип ставки - 1 09:30 10:30 SAVER 1 11:00 12:00 SAVER 1 14:00 15:30 СТАНДАРТ 2 10:00 11:30 ПРЕМИУМ-Б 2 11:30 13:30 ПРЕМИУМ-Б 2 15:00 16:30 ПРЕМИУМ-А
Функциональные зависимости для этого примера не перечислены, но вы можете получить их. Я перечислил FD ниже.
AB-> CD AC-> BD BD-> AC CD-> AB ABC-> D BCD-> ABD-> C ACD-> B D-> а
Для дополнительных неофициальных баллов, я хотел бы знать хороший термин для зависимостей, разрешенных 3NF, но не BCNF?,,, Половина проблемы с BCNF в том, что нет простого названия для запрещенного типа зависимости.
В BCNF каждый определитель (левая часть) должен быть ключом-кандидатом. Или вы могли бы сказать, что каждая стрелка является стрелкой из клавиши-кандидата. И наоборот, BCNF запрещает детерминанты, которые не являются ключами-кандидатами.
Ключи-кандидаты в статье Википедии: {AB, AC, BD, CD}. Исходное отношение отсутствует в BCNF из-за функциональной зависимости D-> A. Определитель этого FD, D, не является ключом-кандидатом.