База данных, как определить функциональные зависимости и если есть в BCNF? - PullRequest
0 голосов
/ 21 ноября 2018

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

В процессе отбора проектов на последнем курсе студенты должны выбрать одну тему исследования для своего проекта.Студенты могут выбрать одну и ту же тему исследования.По каждой теме исследования назначаются супервайзеры для его контроля.Супервайзер может контролировать до двух разных тем исследования, и каждая тема исследования может быть назначена разным супервайзерам.По каждой теме исследования, надзираемой супервайзером, выделяется день консультации, чтобы студент встретился и обсудил с супервайзером.

Эта информация о выборе проекта за последний год хранится в следующей реляционной таблице: FINALYEARPROJECT (supervisor, researchTopic, consultingDay, student)

Это перечисленные мной функциональные зависимости:

студент → исследовательская тема, консультацияДень, руководитель

  • студент - ключ-кандидат.

руководитель, исследовательская тема,студент → консультацияДень

Вопрос 1: От студента я могу найти все атрибуты.Но затем с (руководитель, исследование темы, студент), я также могу найти консультацию дня.Однако это просто суперключ, а не ключ-кандидат.Так должна ли это быть зависимость?

Вопрос 2: Предполагая, что мои зависимости были правильными, я могу вывести эту реляционную таблицу в BCNF.Однако в моих примечаниях к лекции

Определение нормальной формы Бойса-Кодда (BCNF) гласит, что отношение находится в BCNF тогда и только тогда, когда каждый определитель является ключом-кандидатом.

Это очень отличается от того, что я нашел в сети (например, вики):

Реляционная схема R находится в нормальной форме Бойса-Кодда тогда и только тогда, когда для каждой из ее зависимостейX → Y, выполняется хотя бы одно из следующих условий:

X → Y is a trivial functional dependency (Y ⊆ X)
X is a superkey for schema R

Так что теперь, согласно моим примечаниям к лекциям, с найденными зависимостями таблица не будет в BCNF как (supervisor,researchTopic, student) - это не ключ кандидата, это просто суперключ.Однако, если в соответствии с вики, эта таблица будет в BCNF, так как все детерминанты являются суперключами. Так эта таблица в BCNF?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

студенты должны выбрать одну тему исследования

student -> research-topic

Поскольку у каждого студента есть только одна тема исследования, и это только два атрибута в этом отношении, мы знаем, что студент уникалени, таким образом, ключ-кандидат.

Студентам разрешается выбирать одну и ту же тему исследования.

Это говорит о том, что тема исследования не уникальна в том же отношении и не может быть ключом-кандидатом.

По каждой теме исследования руководителям присваивается надзор.

research-topic -> supervisor

Руководитель может контролировать до двух разных тем исследования

Таким образом, руководитель не уникален в этом отношении и не может быть ключом-кандидатом.,

каждая тема исследования может быть назначена различным руководителям.

ОК, пересмотреть (1-й раз)

research-topic, supervisor -> {}

Каждый исследователь имеет более одной темы, а каждая тема - более одного исследователя.

Для каждой темы исследования, надзираемой руководителем, для студента выделяется день консультации

2-я редакция:

research-topic, supervisor, student -> consultation-day

Этонемного грязно, возможно, намеренно, чтобы создать проблему для решения.Поскольку у каждого студента есть только 1 тема исследования, Для каждой темы исследования - это красная сельдь.С таким же успехом можно сказать:

3-я редакция:

research-topic, supervisor -> {}

и

supervisor, student -> consultation-day

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

, чтобы встретиться с супервайзером и обсудить его.

Позвоните этим студентам, супервайзеру и консультации.Я оставляю вам право написать объединение для создания {студент, тема, руководитель, день} и показать, что естественное объединение студента с руководителем дает только 1 строку.

Все, что я сделал, выразил заявленные требования как зависимости.Каждая зависимость минимально захвачена.Это, по сути, BCNF.

Ваш ученический стол не BCNF.Нигде не указано, что студенты выбирают или назначают руководителя.

0 голосов
/ 21 ноября 2018

В обоих определениях BCNF, которые вы цитируете, не упоминается , который устанавливает функциональных зависимостей, используется при проверке соответствия нормальной формы, но это важно.

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

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

Итак, при проверке нормальной формы всегда полезно сначала найти минимальное покрытие данных зависимостей.

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

...