Понимание потенциального ключа

Рассмотрим 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?


person user2637293    schedule 13.12.2015    source источник
comment
алгоритм вычисляет минимальный покрывающий набор, то есть набор, покрывающий все зависимости и являющийся минимальным среди других наборов с таким же свойством.   -  person Nikos M.    schedule 13.12.2015
comment
Но как мы получаем E?, вы не использовали все отношения зависимости, если вы это сделаете, вы получите E   -  person Nikos M.    schedule 13.12.2015
comment
@НикосМ. Вы можете указать отношение, которое я пропустил?   -  person user2637293    schedule 13.12.2015


Ответы (1)


адаптируя ответ из https://stackoverflow.com/a/14595217/3591273

Поскольку у нас есть функциональные зависимости: 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

обновить

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

person Nikos M.    schedule 13.12.2015
comment
* AB (мы можем получить от D до A -> D, а затем мы можем получить от C до D -> C), но как мы получим E? - person user2637293; 13.12.2015
comment
@user3729959 user3729959, смотрите выше этой строки, то есть через ABD -> E это как бы рекурсивно, понимаете? - person Nikos M.; 13.12.2015
comment
@ user3729959, как только у нас будет ABD, мы сможем получить E, хорошо - person Nikos M.; 13.12.2015