-
Notifications
You must be signed in to change notification settings - Fork 0
Дана переменная-отношение R(A, B, C, D, E, F, G, H), для которой выполняется множество функциональных зависимостей S={CD–>A, EC–>H, GHB–>AB, C–>D, EG–>A, H–>B, BE–>CD, EC–>B}. Найти все потенциальные ключи для R.
S=
{
CD–>A,
EC–>H,
GHB–>AB,
C–>D,
EG–>A,
H–>B,
BE–>CD,
EC–>B
}
Атрибуты, встречающиеся только в левой части: E,G (входят во все потенциальные ключи).
F - Не выводим, поэтому участвует во всех потенциальных ключах.
Проверим, является ли {E, G, F} - Потенциальным ключом. {E, G, F}+ = {E, G, A, F} - не является потенциальным ключом, т.к. это не полный набор нашей схемы.
-
Нет смысла добавлять A, т.к. она выводима из {E, G, F}.
-
Добавляем атрибут B.
Проверим, является ли {E, G, B} - Потенциальным ключом.
{E, G, B, F}+ = {E, G, B, A, C, D, H, F} - это полный набор нашей схемы.
(Значит {E, G, B, F} - потенциальный ключ).)
-
Добавляем атрибут С. {E, G, С, F}+ = {E, G, C, H, A, B, D, F} ==> потенциальный ключ
-
Добавляем атрибут D. {E, G, D, F}+ = {E, G, D, A, F} - Не является потенциальным ключом.
Значит пытаемся добавить к {E, G, D} атрибуты (B,C,H).
Добавляем атрибут B. {E, G, D, B, F}+ = {E, G, D, B, A, C, H, F} ==> потенциальный ключ
Добавляем атрибут C. {E, G, D, C, F}+ = {E, G, D, C, A, B, H, F} ==> потенциальный ключ
Добавляем атрибут H. {E, G, D, H, F}+ = {E, G, D, H, A, B, C, F} ==> потенциальный ключ
- Добавляем атрибут H. {E, G, H, F}+ ={E, G, H, A, B, C, D, F} ==> потенциальный ключ