Вы можете найти все зависимые атрибуты заданного набора атрибутов, вычислив закрытие его функциональных зависимостей. Позвольте мне продемонстрировать:
A -> ABC -> ABCD -> ABCDE
A
определяет BC
(данные), а также сами (тривиально) поэтому A -> ABC
. Добавьте факт, что B -> D
, чтобы получить ABC -> ABCD
. Наконец, добавьте CD -> E
, чтобы получить ABCD -> ABCDE
. Мы останавливаемся здесь, потому что мы определили все отношение, поэтому A
является ключом кандидата.
Вы должны убедиться, что, начиная с E
, BC
и CD
, вы действительно можете определить все отношение.
Начиная с B
, мы получаем:
B -> BD
и это все. Остальная часть отношения не может быть определена от BD
, так что это не ключ кандидата.
Более визуальный способ сделать это состоит в эскизе функциональных зависимостей:

Начиная с любого набора атрибутов, попытаться найти путь к любому другому атрибуту, следуя стрелки. Вы можете добраться только до E
, если вы начнете с E
или посетите оба C
и D
.
От B
, вы можете достичь D
, но без C
, вы не разрешали ходить в E
, что также исключает A
. Таким образом, B
не может быть ключом-кандидатом.
Так как он вычисляет сверху диаграмму? – user355834
, пожалуйста, добавьте больше о кратчайшем пути, который вы предложили здесь (например, графике)? – user355834
Следуйте каждой доступной стрелке, начиная с заданного набора атрибутов. Если вы можете связаться со всеми другими узлами, у вас есть ключ-кандидат. Если нет, то нет. – reaanb