Идентификация нормальной формы Бойса-Кодда

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

Ниже приведен ряд отношений в 3-й нормальной форме (услужливо украденный из Identifying Functional Dependencies, которые, в свою очередь, взял их из систем баз данных Connolly & Begg):

Client {clientNo(PK), clientName}
Owner {ownerNo(PK), ownerName}
Property {propertyNo (PK), propertyAddress, rent}
ClientRental {clientNo(PK), propertyNo(PK), rentStart, rentFinish, ownerNo(FK)}

У каждой собственности есть только один владелец, и клиенты могут арендовать эту недвижимость. Предположим, что арендная плата фиксирована для каждого объекта.

Итак, мой вопрос: они также входят в BCNF?

Моя догадка заключается в том, что отношения ClientRental не связаны с тем, что PropertyNo-> ownerNo. Таким образом, PropertyNo является определителем функциональной зависимости, но не суперключом.

Am находится где-нибудь рядом с правильным стадионом?


person Tim Barclay    schedule 12.01.2013    source источник
comment
ClientRental не находится в 3NF, потому что существует транзитивная зависимость. Если вы правильно решите эту проблему, я думаю, у вас будет две таблицы в 6NF и две в 5NF.   -  person Mike Sherrill 'Cat Recall'    schedule 12.01.2013
comment
Ах да, конечно, потому что ownerNo транзитивно зависит от ключа через propertyNo. Правильно? Большое спасибо. Хотя сейчас у меня все еще нет хорошего примера таблицы 3NF, которой нет в BCNF.   -  person Tim Barclay    schedule 13.01.2013
comment
См. статью Википедии о BCNF.   -  person Mike Sherrill 'Cat Recall'    schedule 13.01.2013


Ответы (1)


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

Запись в Википедии для таблицы 3NF, не соответствующей BCNF

Распространенным заблуждением является то, что вы можете нормализовать до 2NF и не выше, затем до 3NF и не выше, затем до BCNF и не выше. На самом деле, исправление частичной зависимости ключа для достижения 2NF часто приводит к тому, что все отношения остаются в 5NF. То есть вы перешли от одного отношения во 2НФ к нескольким отношениям в 5НФ, не останавливаясь между ними на BCNF.

person Mike Sherrill 'Cat Recall'    schedule 02.02.2013