Я пытаюсь понять, что BCNF есть и у меня есть отношения, как это:BCNF с одним суррогатного ключа и два уникальных ключей
Студент (идентификатор, ПЛА, адрес электронной почты, имя, фамилия)
где
- идентификатора является первичным суррогатным ключом с не нулевыми и автоматическим приращением свойствами,
- ПЛА является уникальный ключ с не нулевым свойством и
- email также является уникальным ключом с нулевым значением.
Есть ли что-то, что нарушает BCNF, и если да, то как я могу преодолеть эту ситуацию с лучшим дизайном?
EDIT
Я пытаюсь писать свою функциональную зависимость, но, пожалуйста, поправьте меня, если я ошибаюсь.
Существует три атрибута, которые определяют другие, поэтому сбивает с толку, что ssn и email существуют как в левой, так и в правой частях уравнений. Кажется, что это отношение не НФБК но должно быть что-то неправильно :)
id -> (ssn, email, name, surname)
ssn -> (id, email, name, surname)
email -> (id, ssn, name, surname)
Если набор зависимостей sedran завершен, тогда да. Но, как правило, отсутствие перекрывающихся ключей автоматически не означает, что отношение находится в BCNF. Если бы существовали неключевые зависимости или частичные зависимости от ключей, то это не удовлетворило бы BCNF. – sqlvogel
@sqlvogel - Я не могу думать, как вы можете не быть в BCNF, если нет перекрывающихся ключей. Не могли бы вы показать мне пример, пожалуйста? –
. зависимость A-> B, где A и B не являются первичными, будет нарушением BCNF (и 3NF) независимо от ключей-кандидатов. – sqlvogel