Понимание ключа кандидата
Рассматривать R(A,B,C,D,E)
F = {BC->AE, A->D, D->C, ABD->E}
, Мне нужно найти все возможные ключи схемы. я знаю это BA
,BC
,BD
ключи, но я хочу знать, как их обнаружить.
Я видел некоторые ответы в ключах-кандидатах из функциональных зависимостей =, но я не до конца их понял. Форма, которую они предлагают, я получил L={B}
, M={A,C,D}
, R={E}
Теперь мне нужно добавить из M
по одному L
, Я начинаю с A
, я получил BA
, Так BA->A
, BA->B
(тривиально) и потому A->D
так BA->D
и потому что D->C
мы получаем BA->C
, Но, как мы получаем E
?
1 ответ
Адаптация ответа от /questions/18505425/klyuchi-kandidatyi-ot-funktsionalnyih-zavisimostej/18505435#18505435
Так как у нас есть функциональные зависимости: BC->AE, A->D, D->C, ABD->E
У нас есть следующие суперключи:
ABCDE
(Все атрибуты всегда супер-ключ)ABCD
(Мы можем получить атрибутE
черезABD -> E
)ABC
(Просто добавьD
черезA -> D
)ABD
(Просто добавьC
черезD -> C
)AB
(Мы можем получитьD
черезA -> D
и тогда мы можем получитьC
черезD -> C
)BC
(Мы можем получитьE
черезBC -> E
и тогда мы можем получитьC
черезD -> C
)BD
(Мы можем получитьC
черезD -> C
и тогда мы можем получитьAE
черезBC -> AE
)
(Один трюк, чтобы понять, что с B
никогда не появляется справа от функциональной зависимости, каждый ключ должен включать B
то есть ключ B
является независимым и не может быть получен из других ключей)
Теперь, когда у нас есть все наши супер-ключи, мы можем видеть, что только последние три являются ключами-кандидатами. Так как первые четыре все можно урезать. Но мы не можем убрать какие-либо атрибуты из последних трех суперключей, и все же оставить их как суперключ.
поэтому минимальные ключи AB
, BC
, BD
Обновить
это был подход сокращения, то есть последовательное сокращение тривиального суперключа путем использования функциональных зависимостей, но можно пойти противоположным путем и использовать подход дополнения, то есть начать с отдельных тривиальных ключей и дополнить их другими ключами относительно отношений зависимости, пока ключи не станут лишними