Ключи-кандидаты от функциональных зависимостей

Приведена связь R с атрибутами ABCDE. Вам даны следующие зависимости: A -> B, BC -> E и ED -> A. У меня уже есть ответ CDE, ACD и BCD. Мне просто нужно знать, как это сделать. Благодарю.

4 ответа

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

Поскольку у нас есть функциональные зависимости: A -> B, BC -> E и ED -> A, у нас есть следующие суперключи:

  • ABCDE (все атрибуты всегда супер-ключ)
  • BCED (мы можем получить атрибут A через ED -> A)
  • ACDE (просто добавьте B через A -> B)
  • ABCD (просто добавьте E через BC -> E)
  • ACD (мы можем получить B через A -> B, а затем мы можем получить E через BC -> E)
  • BCD (Мы можем получить E через BC -> E, а затем A из ED -> A)
  • CDE (мы можем получить A через ED -> A и затем B из A -> B)

(Здесь нужно понять одну вещь: поскольку C и D никогда не появляются в правой части функциональной зависимости, каждый ключ должен включать в себя как C, так и D)

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

Таким образом, ключи-кандидаты: ACD, BCD и CDE.

Надеюсь, это поможет,

Чтобы найти ключ-кандидат, вам нужно разделить FD на атрибуты на Левый, Средний, Правый - Левый включает атрибуты, которые отображаются только в левой части (CD) - Средний содержит атрибуты, которые отображаются как слева, так и справа (ABE) - Право включает в себя атрибуты, которые отображаются только в правой части (нет)

Теперь найдите замыкание атрибутов слева: * CD+ -> CD Так как мы не получаем все атрибуты отношения, нам нужно добавлять атрибуты Middle (ABE) по одному и пытаться снова найти замыкание.

Итак: * CDA+ -> CDABE (CDA - ключ-кандидат) * CDB+ -> CDBEA (CDB - ключ-кандидат) * CDE+ -> CDEAB (CDE - ключ-кандидат)

Использовать алгоритм;

1. Возьмите любой атрибут или набор атрибутов.

например: ACD

2. Возьмите первую упомянутую функциональную зависимость

например: A -> B

3. Является ли LHS зависимости подмножеством атрибутов, которые вы выбрали на шаге 1?

Если да, добавьте RHS функциональной зависимости к атрибуту. Если нет, игнорируйте эту функциональную зависимость.

Например: A является подмножеством ACD. Поэтому добавьте B в ACD. ACD теперь ABCD

4. Теперь перейдите к следующей функциональной зависимости. Повторите шаг 3.

Например: BC -> E BC - это подмножество ABCD. Итак, ABCD теперь ABCDE

5. Если у вас есть все атрибуты сейчас, вы можете остановиться.

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

Например: поскольку у меня есть ABCDE для набора атрибутов ACD, я могу остановиться.

Если у вас есть все атрибуты, у вас есть суперключ. Например: ACD - это суперключ, потому что у меня есть ABCDE.

CD является ключом-кандидатом, поэтому ACD, BCD, CDE могут быть ключами-кандидатами. C,D не появляются в правой части каких-либо функциональных зависимостей, поэтому CD является ключом-кандидатом.

Это поможет вам понять.

Другие вопросы по тегам