2013-05-12 5 views
6

Я пытаюсь понять, что BCNF есть и у меня есть отношения, как это:BCNF с одним суррогатного ключа и два уникальных ключей

Студент (идентификатор, ПЛА, адрес электронной почты, имя, фамилия)

где

  • идентификатора является первичным суррогатным ключом с не нулевыми и автоматическим приращением свойствами,
  • ПЛА является уникальный ключ с не нулевым свойством и
  • email также является уникальным ключом с нулевым значением.

Есть ли что-то, что нарушает BCNF, и если да, то как я могу преодолеть эту ситуацию с лучшим дизайном?

EDIT

Я пытаюсь писать свою функциональную зависимость, но, пожалуйста, поправьте меня, если я ошибаюсь.

Существует три атрибута, которые определяют другие, поэтому сбивает с толку, что ssn и email существуют как в левой, так и в правой частях уравнений. Кажется, что это отношение не НФБК но должно быть что-то неправильно :)

id -> (ssn, email, name, surname) 
ssn -> (id, email, name, surname) 
email -> (id, ssn, name, surname) 

ответ

1

Да, ваш стол находится в BCNF. Это связано с тем, что у вас нет перекрывающихся клавиш-кандидатов, т. Е. Нет атрибутов, которые отображаются в двух разных ключах.

Если у вас есть другой атрибут X, который является частью ключей - например, (SSN, X) и (электронная почта, X) - тогда ваша таблица не будет работать BCNF, потому что X должен быть одинаковым для данной пары SSN и электронной почты. Эти ключевые определения позволят использовать разные значения X для заданных SSN и электронных писем.

Для правильного объяснения BCNF, читайте this answer.

+0

Если набор зависимостей sedran завершен, тогда да. Но, как правило, отсутствие перекрывающихся ключей автоматически не означает, что отношение находится в BCNF. Если бы существовали неключевые зависимости или частичные зависимости от ключей, то это не удовлетворило бы BCNF. – sqlvogel

+0

@sqlvogel - Я не могу думать, как вы можете не быть в BCNF, если нет перекрывающихся ключей. Не могли бы вы показать мне пример, пожалуйста? –

+0

. зависимость A-> B, где A и B не являются первичными, будет нарушением BCNF (и 3NF) независимо от ключей-кандидатов. – sqlvogel

2

Способ ответить на ваш вопрос должным образом определить, какие функциональные зависимости должны применяться. Запишите, что вы думаете о зависимостях. Если левая часть каждой нетривиальной зависимости является суперключем, то соотношение удовлетворяет BCNF.

+0

спасибо, я отредактировал свой вопрос – sedran

-4

Ограничения emailaddress или SSN, являющиеся уникальными или NULLable слишком сильными. Вы можете обеспечить их соблюдение, но вы не должны налагать их. (думаю: иностранные студенты.) Как правило, это плохая идея наложить какие-либо ограничения на ключевые домены, которые не подпадают под вашу юрисдикцию, даже если они близки к уникальным (например, в случае SSN).

В качестве примера: опечатка. Предположим, что кто-то хочет записаться как студент, но похоже, что ее SSN уже используется другим человеком, вероятно, вызванным опечаткой. Если вы откажетесь от нового ученика или удалите старый? (или разрешить ли поле SSN быть уникальным или NULLable?)

обновление/окончательное примечание: в этом теге отмечены «datatbase-design» и «нормализация данных». Я отреагировал на выбор дизайна (который спорный).Другие пытались реагировать на BCNF аспектах (которые тривиальные, учитывая, что уникальные ключи-кандидатов и NOT NULL предположения)

нормализующих плохую модель данных дадут вам нормированный но еще неправильную модель.

+2

Мудрость или иное решение некоторых конкретных клавиш не имеет ничего общего с вопросом нормализации, хотя, поскольку ключи уже заданы. Несомненно, это не означает, что у студентов есть уникальный адрес электронной почты и уникальный налоговый идентификатор. Множество систем реального мира * do * требуют уникальных адресов электронной почты в качестве идентификаторов, поскольку они легко запоминаются, проверяются и относительно стабильны. И если появляется дубликат SSN, тогда совершенно разумно не допускать этого и требовать от кого-то проверить, какие из этих дубликатов могут быть ошибочно введены или недействительны. – sqlvogel

+0

OP - пример игрушки, и это пример игры IMHO * * *, потому что он делает неявные предположения о «чужих» доменах. Для реальных игрушечных примеров учитель должен использовать настоящие проблемы с игрушками (например, судоку, скребок или кроссворды) – wildplasser

+3

Хммм, скажи Amazon или Microsoft, что тот факт, что им нужны уникальные адреса электронной почты для их систем, делает их «игрушечными», ! Я думаю, что вы делаете предположения о проблеме, которая устанавливает совершенно реалистичный пример в теории нормализации. – sqlvogel

Смежные вопросы