Как я могу определить ключи-кандидаты в этом отношении

У меня есть отношение R(ABCDEF) и функциональные зависимости F{AC->B, BD->F, F->CE}

Я должен найти все ключи-кандидаты для отношения (аксиомы Армстронга).

Я сделал это:

A->A, B->B, C->C, D->D, E->E, F->F

От F->CE => F->C and F->E

And then:
 1. BD->F
 2. F->E
 3. BD->E
 4. BD->EF
 5. BD->BD
 6. BD->BDEF
 7. BD->F
 8. F->CEF
 9. BD->CEF     => BD->BCDEF

Сейчас пытаюсь получить A на правой стороне BD->BCDEF так что BD может стать кандидатом в ключи.

Было бы здорово, если бы кто-то мог помочь.

РЕДАКТИРОВАТЬ:

 1. ABD->ABCDEF
 2. ACD->BD
 3. ACD->ABD    => AC->B and ACD->ABCDEF => BD->ABCDEF

2 ответа

Решение

Последний шаг в вашей (отредактированной) логике

AC->B and ACD->ABCDEF, therefore BD->ABCDEF

Похоже, вы заменили AC на B на левой стороне. Вы, кажется, думаете в арифметических терминах, а не в терминах правил вывода Армстронга. Нет правила вывода, которое гласит: "Если AC->B, то везде, где есть AC, вы можете заменить AC на B". (Иногда кажется, что так и происходит, но это не так.) AC и B не равны, и они не эквивалентны.

Представьте, что имена людей уникальны. Тогда "имя" будет определять "рост", а "имя" будет определять "вес". Но вы не можете заменить имя на высоту; Вы не можете сказать, что "рост" определяет "вес". Условия не равны, и они не эквивалентны.

BD - это не ключ-кандидат, а ABD. (Есть и другие.)

Эмпирические правила:

An Attribute appearing only on the left hand side in your FDs is in all keys.
An Attribute not appearing in any of your FDs is in all keys.
An Attribute only appearing on the right hand side in your FDs is not in any key.

A candidate key is the left hand side of a derived FD on which all attributes depend.

Пример:

R(ABCDE), (A->C, AB->D, D->B)

E не появляется ни в одном FD. E во всех ключах. А появляется только на левой стороне. А есть во всех ключах. C появляется только с правой стороны. С не в каких ключах.

Ключи будут включать атрибуты:

AE

Найти зависимости с каждым возможным ключом от AE:

A->C
A->AC    (X->XY axiom)
E->E
AE->ACE  (from previous 2 FDs)

Не все атрибуты справа, поэтому AE - это не ключ, а только часть всех ключей.

Начните комбинировать AE с BCD и посмотрите, что получится:

ADE->ABCDE   (as D->B, and by X->XY axiom D->BD. This is a key, by last rule of thumb)
ACE->ACE
ABE->ABCDE (AE->ACE, B->BD from axioms, this is a key)
ABCE->ABCDE, ABDE->ABCDE (superkeys of ABE, so ignore)
ACDE->ABDCE (superkey of ADE)

Предполагая, что я сделал это правильно, тогда ABE и ADE являются ключами.

Другие вопросы по тегам