Влияет ли уникальность неключевого атрибута на 3NF? - PullRequest
0 голосов
/ 04 октября 2019

Когда я проектировал базу данных для моего курса по базам данных, я столкнулся с вопросом, который заставил меня сомневаться в моем дизайне.

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

В одной из моих таблиц (Employees) у меня есть два столбца: 1. EmployeeID, и2. Email и, возможно, некоторые другие атрибуты, связанные с сущностью сотрудника.

Теперь мне интересно, нарушает ли уникальность электронной почты (для каждого сотрудника) третью обычную форму. Потому что я могу просто отбросить EmplooyeID и поставить Email в качестве первичного ключа в этом проекте.

Ответы [ 2 ]

1 голос
/ 05 октября 2019

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

Название этого вопроса противоречиво. Если набор атрибутов является уникальным (и не обнуляемым), тогда этот набор атрибутов является суперключом, и некоторое некоторое подмножество атрибутов суперключа должно быть ключом. Идея неключевых атрибутов, имеющих «уникальность», не имеет никакого смысла, если уникальность определяется зависимостью, удовлетворяемой отношением. Назначение ключа как первичного или вторичного не имеет значения, поскольку нормальные формы в равной степени относятся ко всем ключам, а не только к одному.

0 голосов
/ 04 октября 2019

Нормализация относится к тому, как данные в таблице связаны друг с другом. Таблица поиска, подобная описанной вами (столбец идентификатора со столбцом значения / атрибута), является ключевой особенностью нормализации. Использование суррогатного ключа хорошо и не нарушает 3NF.

Microsoft описывает основы нормализации в этой статье. Пример в конце говорит о 3NF и говорит:

Третья нормальная форма: исключить данные, не зависящие от ключа

Это не относится к самому ключу. Адрес электронной почты в вашем примере зависит от ключа и, следовательно, удовлетворяет 3NF.

...