Бойс Кодд и поиск ключей-кандидатов
Нуждающийся в отчаянной помощи с пониманием Бойса Кодда и поиска ключей-кандидатов. я нашел ссылку здесь http://djitz.com/neu-mscs/how-to-find-candidate-keys/ которую я понял по большей части, но я застрял
например
(ABCDEF)
AB → CDE
BCD → A
BCE → AD
BD → E
прямо, насколько я понимаю по ссылке, я знаю, что вы найдете общие наборы слева, который является только B, и общие наборы справа, которые не имеют
теперь куда мне идти отсюда? Я знаю, что все наборы кандидатов будут иметь B, но мне нужно руководство по поиску наборов кандидатов после этого. кто-то объясняет простым языком
2 ответа
Связанная статья написана не очень хорошо. (Это наблюдение, а не критика. Родной язык автора - не английский.) Я попытаюсь переписать алгоритм. Это не я говорю тебе, как это сделать. Это моя интерпретация того, как оригинальный автор говорит вам сделать это.
- Определите атрибуты, которые не находятся ни на левой стороне, ни на правой стороне любого FD.
- Определите атрибуты, которые находятся только на правой стороне любого FD.
- Определите атрибуты, которые находятся только на левой стороне любого FD.
- Объедините атрибуты из шагов 1 и 3.
- Вычислить закрытие атрибутов из шага 4. Если закрытие включает все атрибуты, то атрибуты из шага 4 составляют единственный ключ-кандидат. (Независимо от того, сколько ключей-кандидатов существует, каждый из них должен содержать эти атрибуты.)
- Определите атрибуты, не включенные в шаг 4 и шаг 2.
- Вычислить закрытие атрибутов из шага 4 плюс каждую возможную комбинацию атрибутов из шага 6.
Так что для FD, которые вы разместили, вы бы в конечном итоге с этим.
- {F}
- {}
- {B}
- {} Б.Ф.
- Закрытие {BF} является {BF}. Это не все атрибуты. (Но каждый ключ-кандидат должен содержать {BF}.)
- {} ACDE
- Вычислить закрытие этих наборов атрибутов.
- {} АБФ
- {} БФК
- {} DBF
- {} ФВГ
- {} ACBF
- {} ADBF
- {} AEBF
- {} CDBF
- {} CEBF
- {} DEBF
- {} ACDBF
- {} ADEBF
- {} CDEBF
Если я правильно понял эти комбинации, каждый ключ-кандидат будет найден среди возможных вариантов на шаге 7. В вашем примере есть 3 ключа-кандидата.
http://www.sroede.nl/projects/fdhelper.aspx
это помогло бы 'просто поставить в твою связь и клик FD генерировать внизу