Это отношение в Бойс-Кодд NF? - PullRequest
0 голосов
/ 10 июня 2018

У меня есть отношение R(a,b,c,d), где (a,b) - первичный ключ, поэтому у меня есть определитель a,b -> c,d.В дополнение к этому у меня есть следующие детерминанты: a,c -> b,d и a,d -> b.

Давайте будем в порядке, что это отношение в 3NF.Мне интересно, в BCNF или нет.Я использовал определение для BCNF, которое распознает:

отношение находится в BCNF, если оно в 3NF и нет определителя X -> Y, такого как X - неключевые атрибуты, а Y - часть (или совокупность) ключа

, что, например, не применимо в моем случае для определителя a,d -> b.Другое определение состоит в том, что

Отношение R находится в BCNF, если для каждого нетривиального FD (X-> A), удовлетворяемого R, выполняется следующее условие:

(a)X - это суперключ для R

, который оставил меня нерешенным, поскольку в a,d->b ясно, что (a,d) не является суперключем (ни ключом), но у нас (a,d) явно ключк отношению R!

Итак, мой вопрос:

  • Является ли отношение R в BCNF или нет, и почему?
  • И каков правильный процесс дляопределить, есть ли отношение в BCNF?

1 Ответ

0 голосов
/ 10 июня 2018

О терминологии

Вы говорите:

У меня есть определитель a,b -> c,d

Это неверная терминология.a,b -> c,d является функциональной зависимостью (иногда сокращенно от FD), которая имеет определитель a,b (иногда называемый левой стороной (LHS) FD) и определитель c,d (иногда называемый правой стороной, RHS, FD).Эта терминология используется, поскольку значения атрибутов a,b однозначно определяют значения атрибутов c,d.

О ключе

Информация, которая:

(a, b) является первичным ключом

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

В вашем примере, например, есть три ключа-кандидата:

1. a, b
2. a, c
3. a, d

Вы можете проверить этот факт, вычислив закрытие атрибутов ключа-кандидата, чтобы увидеть, содержит ли он все атрибуты.Например, давайте попробуем вычислить замыкание a,d (называемое a,d *):

1. a,d * = a,d
2. a,d * = a,d,b  (since a, d -> b)
3. a,d * = a,d,b,c (since a, b -> c, d)

Так что a,d является ключом-кандидатом (который также является суперключом, то есть набором атрибутов, которыеопределяет все атрибуты отношения).

О BCNF

Существуют различные определения BCNF.Используя, например, вторую, которую вы процитировали, все три зависимости имеют определитель, который является ключом-кандидатом (и, следовательно, суперключом), и поэтому отношение находится в BCNF.

...