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

Для отношения {A,B,C,D} со следующими функциональными зависимостями:

A -> BCD
B -> C
CD -> A

Используя определенный метод, который я нашел на одном из сайтов, я получаю ключ-кандидат как ABCD. Это правильно ? Каков правильный ключ(и) кандидата?


person Cygnus    schedule 02.01.2013    source источник
comment
Нет, это неправильно. Во-первых, {ABCD} — это полная относительная переменная, поэтому {ABCD} — тривиальный суперключ. Какой метод и веб-сайт вы использовали? Какой метод есть в вашем учебнике?   -  person Mike Sherrill 'Cat Recall'    schedule 02.01.2013
comment
@Catcall: вот ссылка ..techvyom.com/forum/ Thread-How-to-find-Candidate-Keys.. Правильно ли ABCD согласно этому? Или я что-то пропустил??   -  person Cygnus    schedule 03.01.2013
comment
ABCD — тривиальный суперключ. Каждый алгоритм должен генерировать ABCD. Но ABCD не является ключом-кандидатом в этом отношении. (По определению ключ-кандидат — это минимальный суперключ.) Вы можете сказать, что алгоритм в вашей ссылке неадекватен, путем простой проверки. Он не генерирует A в качестве ключа-кандидата, но вам дан A -> BCD. Кроме A, есть еще два ключа-кандидата.   -  person Mike Sherrill 'Cat Recall'    schedule 03.01.2013
comment
@Catcall: Ооо..!! :/ Вы знаете, где я могу найти правильный алгоритм?   -  person Cygnus    schedule 05.01.2013
comment
Ваш учебник. Какой из них вы используете?   -  person Mike Sherrill 'Cat Recall'    schedule 05.01.2013
comment
@Catcall: Ммм... это точно не часть моей курсовой работы... это касается отдельного экзамена, который я должен сдать, и, насколько я помню, этого не было и в нашем курсе...   -  person Cygnus    schedule 07.01.2013
comment
Каждый учебник для колледжа, который я видел по системам баз данных, включал по крайней мере один алгоритм. Позвольте мне посмотреть, что я могу связать вас с онлайн.   -  person Mike Sherrill 'Cat Recall'    schedule 07.01.2013


Ответы (2)


ABCD — тривиальный суперключ. Каждый алгоритм должен генерировать ABCD. Но ABCD не является ключом-кандидатом в этом отношении. Ключ-кандидат по определению является минимальным суперключом.

Вы можете сказать, что алгоритм в вашей ссылке неадекватен, путем простой проверки. Он не генерирует A в качестве ключа-кандидата, но вам дается A -> BCD, поэтому A явно является ключом-кандидатом. Кроме A, есть еще два ключа-кандидата.

Этот ТАК ответ @ErwinSmout описывает алгоритм, который подходит для карандаша и бумаги. Большинство учебников включают алгоритмы, подходящие для автоматизации.

person Mike Sherrill 'Cat Recall'    schedule 07.01.2013
comment
Огромное спасибо за помощь!! Это было очень полезно.. :) - person Cygnus; 08.01.2013

Давайте упростим: вот определение для ключей Super,candidate.

Суперключи

Супер ключ означает надмножество ключа.

Суперключ — это набор из одного или нескольких атрибутов, которые взяты вместе и могут однозначно идентифицировать все остальные атрибуты.

Ключи-кандидаты

Ключи-кандидаты — это суперключи, для которых ни одно подмножество не является суперключом.

Другими словами, ключи-кандидаты — это минимальные суперключи.

По свойству Closure получаем

A+=ABCD

поскольку

A-›BCD дано

A-›правило рефлексивности

Таким образом, A является ключом-кандидатом.

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

person Lordferrous    schedule 10.05.2015