2016-06-26 11 views
0

Рассмотрим отношение схемы R = (A, B, C, D, E, F) и множество функциональных зависимостей:Как выбрать ключ кандидата в данной схеме отношений R?

A→B 

A→C 

BC→E 

BC→D 

E→F 

BC→F 

Какой кандидат ключ отношения R?

A) A 

B) BC 

C) ABC 

D) ABCE 

стандартный ответ является C, который я должен использовать ABC в качестве кандидата ключа в этих отношениях.

Но так:

A -> B,C 

B,C -> D,E,F 

, так что я думаю, что можно определить все другие атрибуты

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

ли я неправильно понял отношения с зависимостями?

Почему я не могу просто использовать ключ А в качестве ключа кандидата для идентификации всех остальных атрибутов?

+0

Предположительно вы имеете в виду «функционально определяет», а не «может идентифицировать». Какую цепочку правил/аксиом вы можете использовать, чтобы показать, что A -> B, C & BC -> D подразумевает ABC -> D? PS Что означает «отношения зависимостей»? – philipxy

ответ

2

Вы правы, ключ (кандидат) в этом случае равен A, а A B C - это суперключ.

Учитывая формальное определение ключа-кандидата как «набора атрибутов, который определяет все атрибуты отношения и который потеряет это свойство, исключив из него какой-либо атрибут», мы можем показать, что замыкание A, A+, определяет все атрибуты таким образом:

A+ = A (to compute the closure, we start with the attribute) 
A+ = ABC (for transitivity with respect to A→B and A→C) 
A+ = ABCDEF (for transitivity with respect to BC→E and BC→D and BC→F) 

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