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

Учитывая следующие функциональные зависимости от отношения R(A B C D E F G)

AB → CF
BG → C
AEF → C
ABG → ED
CF → AE
A → CG
AD → FE
AC → B

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

Я получил это:

L | M       | R
--|---------|----
- | ABCDEFG | - 

Отсюда я разработал замыкания для каждого отдельного атрибута и перестановки: BC, BD, BE, BF, BG, CD, CF...

Я обнаружил, что только замыкание A и CF содержат все атрибуты и, следовательно, являются ключами-кандидатами, однако решение проблемы также имеет BFG.

Может кто-нибудь объяснить, что я делаю неправильно при вычислении ключей-кандидатов? Спасибо


person sam    schedule 16.04.2012    source источник
comment
Пробовали ли вы использовать другой алгоритм, чтобы увидеть, получите ли вы те же результаты?   -  person Mike Sherrill 'Cat Recall'    schedule 17.04.2012
comment
Не уверен, какие другие алгоритмы я мог бы использовать. Должен ли я брать все возможные комбинации и закрывать их, то есть комбинации 2,3,4,...?   -  person sam    schedule 17.04.2012
comment
Иногда вам приходится это делать. Я не знаком с использованным вами алгоритмом, по крайней мере, с тем, как вы его представили. BFG действительно является ключом-кандидатом. Вам не хватает, как получить закрытие BFG?   -  person Mike Sherrill 'Cat Recall'    schedule 17.04.2012
comment
Используемый вами алгоритм это? (Начинается на стр. 5)   -  person Mike Sherrill 'Cat Recall'    schedule 17.04.2012


Ответы (1)


Этот алгоритм пытается найти короткие пути (стр. 3), но в вашем случае это не так. не найти. Чтобы определить, является ли какая-либо конкретная комбинация атрибутов ключевой, вы пытаетесь выяснить, определяет ли эта комбинация все остальные атрибуты. В вашем случае вы сделали всю работу; Вы просто что-то упускаете из виду в BFG.

Logic                                    Attributes
--
BFG -> BFG, ∴ ...                       { B   FG}
BG -> C, ∴ BFG -> CF                    { BC  FG}
BFG -> CF and CF -> AE, ∴ BFG -> AE     {ABC EFG}
BFG -> AE,  ∴  BFG -> A
BFG -> A and ABG -> ED, ∴ BFG -> ED     {ABCDEFG}

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

person Mike Sherrill 'Cat Recall'    schedule 17.04.2012