Для отношения {A,B,C,D} со следующими функциональными зависимостями:
A -> BCD
B -> C
CD -> A
Используя определенный метод, который я нашел на одном из сайтов, я получаю ключ-кандидат как ABCD. Это правильно ? Каков правильный ключ(и) кандидата?
Для отношения {A,B,C,D} со следующими функциональными зависимостями:
A -> BCD
B -> C
CD -> A
Используя определенный метод, который я нашел на одном из сайтов, я получаю ключ-кандидат как ABCD. Это правильно ? Каков правильный ключ(и) кандидата?
ABCD — тривиальный суперключ. Каждый алгоритм должен генерировать ABCD. Но ABCD не является ключом-кандидатом в этом отношении. Ключ-кандидат по определению является минимальным суперключом.
Вы можете сказать, что алгоритм в вашей ссылке неадекватен, путем простой проверки. Он не генерирует A в качестве ключа-кандидата, но вам дается A -> BCD, поэтому A явно является ключом-кандидатом. Кроме A, есть еще два ключа-кандидата.
Этот ТАК ответ @ErwinSmout описывает алгоритм, который подходит для карандаша и бумаги. Большинство учебников включают алгоритмы, подходящие для автоматизации.
Давайте упростим: вот определение для ключей Super,candidate.
Суперключи
Супер ключ означает надмножество ключа.
Суперключ — это набор из одного или нескольких атрибутов, которые взяты вместе и могут однозначно идентифицировать все остальные атрибуты.
Ключи-кандидаты
Ключи-кандидаты — это суперключи, для которых ни одно подмножество не является суперключом.
Другими словами, ключи-кандидаты — это минимальные суперключи.
По свойству Closure получаем
A+=ABCD
поскольку
A-›BCD дано
A-›правило рефлексивности
Таким образом, A является ключом-кандидатом.
Надеюсь это поможет!
A -> BCD
. Кроме A, есть еще два ключа-кандидата. - person Mike Sherrill 'Cat Recall'   schedule 03.01.2013