Объяснение третьей нормальной формы (3NF)

Пусть в некоторой таблице хранится информация о предметах, которые читают преподаватели. Бизнес-правило состоит в том, что один профессор может читать только один предмет, но один и тот же предмет могут читать многие профессора. Область учителя уникальна. Id — это суррогатный ключ.

Структура таблицы и пример данных приведены ниже.

id  teacher subject
--------------------
1    A       Math
2    B       Computer science
3    C       Math

Id здесь является суррогатным ключом.

Вопрос в том, выполняется ли для этой таблицы второе условие определения 3 NF.

Определение 3NF, которое я считаю

Определение Кодда гласит, что таблица находится в 3НФ тогда и только тогда, когда выполняются оба следующих условия:

Отношение R (таблица) находится во второй нормальной форме (2НФ).

Каждый непростой атрибут R нетранзитивно зависит от каждого ключа R.


person PavelX    schedule 12.02.2020    source источник
comment
Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат.   -  person Samuel Liew♦    schedule 15.02.2020
comment
@SamuelLiew (Спасибо, что переместили эту кучу комментариев.) Не могли бы вы также переместить комментарии к ответу в чат? (Я ценю, что комментарии сохраняются.)   -  person philipxy    schedule 15.02.2020


Ответы (1)


Для данной таблицы единственными недействительными FD являются X->{id}, X->{учитель} и X->{id, учитель}, где X - это {} или {субъект}. Следовательно, из суперключа мы можем сделать вывод, что CK — это {id} и {teacher}. Атрибут, отличный от CK, — {sibject}.

Анализ FD показывает, что каждый непростой атрибут ({subject}) не транзитивно зависит от каждого ключа (CK), потому что

{id}->{тема}, {учитель}->{тема}.

Итак, второе условие определения выполнено.

person PavelX    schedule 13.02.2020
comment
К сожалению, Watt - очень плохой учебник, и его определение 3NF неверно, а другие плохие. Также: Как вы думаете, почему эти FD верны? Почему вы думаете, что это КК? (Как вы можете думать, что знаете CK, если вы не знаете FD? Понимаете ли вы, что когда одни FD выполняются, другие должны выполняться, и всегда есть тривиальные FD?) Ваш вопрос все еще слишком широк, поэтому вы должны попытаться привязать его к конкретному вопросу. Вы все равно ничего не оправдываете. PS Десятки опубликованных учебных пособий по информационному моделированию и проектированию БД доступны онлайн бесплатно в формате pdf. На stanford.edu есть бесплатный онлайн-курс. - person philipxy; 13.02.2020
comment
Чтобы показать, что FD содержат и не содержат с учетом определения и грубой силы, вы должны показать для каждой пары подмножеств атрибутов, имеет ли место связанный FD. Есть ярлыки. Также это включает в себя интерпретацию строк с точки зрения бизнеса. Идентификация функциональных зависимостей II Вам действительно нужно найти достойный опубликованный учебник. Какой (русский) из твоего класса? Все это также часто задаваемые вопросы, хотя обычно ответы очень плохие, что вы можете увидеть, сравнив их с некоторыми учебниками. Мои ответы (в основном) ОК. (Сейчас я должен идти.) - person philipxy; 13.02.2020
comment
спасибо, филиппи. У меня нет конкретного учебника, рекомендованного для моего класса, поскольку тема нормализации базы данных была пропущена, и мы начали прямо с SQL, а затем с PL/SQL. Вопрос возник при попытке изучить эту тему по открытым источникам. Конкретный вопрос может быть сформулирован следующим образом. В таблице хранится информация о предметах, которые именно так читаются преподавателями. Бизнес-правило состоит в том, что один профессор может читать только один предмет, но один и тот же предмет могут читать многие профессора. Id здесь является суррогатным ключом. Вопрос в том, находится ли эта таблица в 3 НФ. - person PavelX; 14.02.2020
comment
Теперь я вижу, что ответ положительный, и насколько я понимаю, ваше возражение касается не этого факта, а обоснования. Я понимаю, что это не строго, потому что, например, я не показал анализ каждого существующего ФД. Но моя главная цель состояла в том, чтобы получить представление о том, как эта таблица соответствует условию 3NF, потому что я думал, что id-> учитель и учитель-> предмет приводят к транзитивной зависимости непростого атрибута id-> предмет. Теперь я понимаю, что это было неправильно и почему это было неправильно. Спасибо, что помогли мне внимательно отнестись к терминологии и определениям и получить желаемый ответ. - person PavelX; 14.02.2020
comment
На данный момент ваш вопрос звучит примерно так: у вас есть эта схема и некоторые бизнес-правила и данные, и вы хотите найти все FD, которые хранятся, и вы нашли метод (учебник или моя ссылка), и вы сделали определенные шаги, и вы застряли и погуглили с сайт: stackoverflow.com и вот что вы знаете о зависании, так как же выйти из тупика? Пожалуйста, отредактируйте свой пост, чтобы задать такой вопрос. Проблема с тем, что вы не говорите, какие определения и алгоритмы вы используете и как вы им следовали, заключается в том, что вы просите переписать этот раздел учебника и сделать специальное руководство ... чтобы застрять .... Обратите внимание, что текущие сообщения заслуживают отрицательных голосов. .. - person philipxy; 14.02.2020
comment
Предполагая, что ваши последние бизнес-правила плюс ваш ранний вопрос и комментарии о том, что {учитель} уникален, CK - это {id} и {учитель}, а единственные FD, которые не поддерживаются, - это X-›{id}, X-›{ учитель} & X-›{id, учитель}, где X – {} или {субъект}. PS Когда вы буквально не знаете, какому алгоритму следовать, вам нужно выяснить и спросить, где и как вы застряли, следуя ему, или спросить, где и как вы застряли, пытаясь найти алгоритм. И мы не можем сказать, где вы ошиблись, если вы не даете алгоритм и шаги. PS Транзитивные FD сложны и многочисленны, используйте определение Zaniolo 3NF, если у вас есть выбор. - person philipxy; 14.02.2020
comment
philipxy, в этот момент я понимаю, что мой первоначальный вопрос возник из-за небрежного обращения с терминологией. Именно я думал, что если id является первичным ключом, то {teacher}->{subject} является FD между неосновными атрибутами, потому что, другими словами, я думал, что неосновной означает не первичный ключ. По той же причине я также считал, что A->B & B->C означает заведомо транзитивное FD A->C в любом случае, даже если A есть PK, а B есть CK. Но в тот момент я не мог понять, где ошибка в моих рассуждениях. - person PavelX; 14.02.2020
comment
Ваши комментарии о том, что мои определения бедны и неверны, действительно указали мне место, где можно найти ответ. Это была моя настоящая проблема. Я отредактирую свой вопрос, чтобы уточнить это. Если вы считаете, что этот вопрос заслуживает отрицательных голосов, я не буду спорить, но я застрял, и это обсуждение в конечном итоге мне точно поможет. - person PavelX; 14.02.2020
comment
Так как скрывает неочевидные шаги рассуждений. PS Предложите, чтобы на любой вопрос, на который, по вашему мнению, отвечает этот вопрос, вы должны отредактировать сообщение с вопросом, чтобы задать его. Прямо сейчас вопрос не ясен и содержит неверные рассуждения. (Согласно бизнес-правилам вопроса, {teacher} не является CK, и ни {teacher}->{subject}, ни {teacher}->{id} не действуют. Но вам вообще нужно упоминать бизнес-правила?) - person philipxy; 15.02.2020