Рубрики

Функциональная зависимость и закрытие атрибутов

Функциональная зависимость

Функциональная зависимость A-> B в отношении сохраняется, если два кортежа с одинаковым значением атрибута A также имеют одинаковое значение для атрибута B. Например, в отношении STUDENT, показанном в таблице 1, Функциональные зависимости

STUD_NO->STUD_NAME, STUD_NO->STUD_PHONE hold

но

STUD_NAME->STUD_ADDR do not hold

Как найти функциональные зависимости для отношения?

Функциональные зависимости в отношении зависят от области отношения. Рассмотрим отношение СТУДЕНТ, приведенное в таблице 1.

  • Мы знаем, что STUD_NO уникален для каждого студента. Так что STUD_NO-> STUD_NAME, STUD_NO-> STUD_PHONE, STUD_NO-> STUD_STATE, STUD_NO-> STUD_COUNTRY и STUD_NO-> STUD_AGE все будут верны.
  • Аналогично, STUD_STATE-> STUD_COUNTRY будет иметь значение true, как если бы две записи имели одинаковый STUD_STATE, они также будут иметь одинаковый STUD_COUNTRY.
  • Для отношения STUDENT_COURSE значение COURSE_NO-> COURSE_NAME будет истинным, поскольку две записи с одним и тем же COURSE_NO будут иметь одинаковое имя COURSE_NAME.

Набор функциональных зависимостей: Набор функциональных зависимостей или набор FD отношения — это набор всех FD, присутствующих в отношении. Например, FD, установленный для отношения STUDENT, показанного в таблице 1:

 { STUD_NO->STUD_NAME, STUD_NO->STUD_PHONE, STUD_NO->STUD_STATE, STUD_NO->STUD_COUNTRY, 
  STUD_NO -> STUD_AGE, STUD_STATE->STUD_COUNTRY }


Закрытие атрибута:
Закрытие атрибута набора атрибутов может быть определено как набор атрибутов, которые могут быть функционально определены из него.

Как найти закрытие атрибута набора атрибутов?
Чтобы найти закрытие атрибута набора атрибутов:

  • Добавить элементы набора атрибутов в набор результатов.
  • Рекурсивно добавлять элементы в набор результатов, которые могут быть функционально определены из элементов набора результатов.

Используя набор FD таблицы 1, закрытие атрибута может быть определено как:

(STUD_NO)+ = {STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY, STUD_AGE}
(STUD_STATE)+ = {STUD_STATE, STUD_COUNTRY}

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

  • Если закрытие атрибута набора атрибутов содержит все атрибуты отношения, набор атрибутов будет супер-ключом отношения.
  • Если никакое подмножество этого набора атрибутов не может функционально определить все атрибуты отношения, этот набор также будет ключом-кандидатом. Например, используя набор FD таблицы 1,

(STUD_NO, STUD_NAME) + = {STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY, STUD_AGE}

(STUD_NO) + = {STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY, STUD_AGE}

(STUD_NO, STUD_NAME) будет супер ключом, но не ключом-кандидатом, поскольку его подмножество (STUD_NO) + равно всем атрибутам отношения. Таким образом, STUD_NO будет ключом-кандидатом.

ВОРОТ Вопрос: Рассмотрим схему отношений R = {E, F, G, H, I, J, K, L, M, M} и множество функциональных зависимостей {{E, F} -> {G}, {F } -> {I, J}, {E, H} -> {K, L}, K -> {M}, L -> {N} на R. Что является ключом для R? (GATE-CS-2014)
A. {E, F}
B. {E, F, H}
C. {E, F, H, K, L}
D. {E}

Ответ: Найдя атрибут закрытия всех заданных опций, получаем:
{E, F} + = {EFGIJ}
{E, F, H} + = {EFHGIJKLMN}
{E, F, H, K, L} + = {{EFHGIJKLMN}
{E} + = {E}
{EFH} + и {EFHKL} + приводят к набору всех атрибутов, но EFH минимален. Так что это будет ключ кандидата. Так что правильный вариант (B).

Как проверить, можно ли получить FD из заданного набора FD?

Чтобы проверить, может ли FD A-> B быть получена из набора FD F,

  1. Найти (A) +, используя FD множество F.
  2. Если B является подмножеством (A) +, то A-> B истинно, иначе не верно.

GATE Вопрос: В схеме с атрибутами A, B, C, D и E дан следующий набор функциональных зависимостей
{A -> B, A -> C, CD -> E, B -> D, E -> A}
Какие из следующих функциональных зависимостей НЕ подразумеваются вышеприведенным набором? (GATE IT 2005)
А. CD -> AC
Б. BD -> CD
До н.э. -> CD
D. AC -> BC

Ответ: используя заданный вопрос FD,
(CD) + = {CDEAB}, что означает, что CD -> AC также выполняется.
(BD) + = {BD}, что означает, что BD -> CD не может быть верным. Так что этот FD не подразумевается в наборе FD. Таким образом, (B) является обязательным вариантом.
Другие могут быть проверены таким же образом.

Основные и непростые атрибуты

Атрибуты, которые являются частями любого подходящего ключа отношения, называются простыми атрибутами, другие являются непростыми атрибутами. Например, STUD_NO в отношении STUDENT является основным атрибутом, другие являются непростым атрибутом.

ВОРОТ Вопрос: Рассмотрим схему отношений R = (A, B, C, D, E, H), от которой имеют место следующие функциональные зависимости: {A–> B, BC–> D, E–> C, D–> A }. Какие ключи-кандидаты R? [GATE 2005]
(а) AE, BE
(б) AE, BE, DE
(в) AEH, BEH, BCH
(г) AEH, BEH, DEH

Ответ: (AE) + = {ABECD}, который не является набором всех атрибутов. Таким образом, AE не является ключом-кандидатом. Следовательно, варианты A и B неверны.
(AEH) + = {ABCDEH}
(BEH) + = {BEHCDA}
(BCH) + = {BCHDA}, который не является набором всех атрибутов. Таким образом, BCH не является ключом-кандидатом. Следовательно, вариант C неверен.
Так что правильный ответ D.

Эта статья предоставлена Sonal Tuteja . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

Рекомендуемые посты:

Функциональная зависимость и закрытие атрибутов

0.00 (0%) 0 votes