Двойная функциональная зависимость

У меня вопрос по функциональным зависимостям. Я понимаю, что функциональная зависимость означает, что значение атрибута может быть определено значением другого атрибута. Предположим, у нас есть эта таблица

|A|B|C|D|

Здесь A и B являются первичными ключами. Правильно ли сказать, что и C, и D функционально зависят как от A, так и от B?


comment
Почему вы говорите, что A и B являются первичными ключами, когда таблица может иметь только один? Вы имеете в виду ключи-кандидаты? Вы имеете в виду, что первичный ключ {A, B}?   -  person philipxy    schedule 26.12.2015
comment
Вы говорите, что функциональная зависимость означает, что значение атрибута может быть определено значением другого атрибута, но это неверно, потому что наборы атрибутов определяют атрибут или набор атрибутов, плюс вы не объясняете, что может быть определено.   -  person philipxy    schedule 28.06.2018


Ответы (2)


Вы говорите, что «A и B являются первичными ключами», но эта фраза двусмысленна: вы имеете в виду: «Первичный ключ — это A B» или «это два возможных ключа, A и B»? (и обратите внимание, что в отношении в реляционной базе данных у вас может быть только один первичный ключ и множество ключей-кандидатов).

Учитывая определение ключа (кандидата), то есть то, что он определяет все остальные атрибуты и что вы не можете удалить какой-либо атрибут, не потеряв это свойство, в первом случае вы можете сказать, что:

A B -> C D

или, что эквивалентно, что:

A B -> C
A B -> D

(поэтому C e D зависит от комбинации A и B), а во втором случае у вас есть это:

A -> C D
B -> C D

или, что эквивалентно, что:

A -> C
A -> D
B -> C
B -> D

(то есть C и D функционально зависят как от A, так и от B).

person Renzo    schedule 24.12.2015

«S (функционально) определяет T» означает, что все появления определенного значения подкортежа для набора атрибутов S имеют одно и то же значение подкортежа для набора атрибутов. T. Если мы говорим, что атрибут X является определяющим или определяемым, то подразумевается, что на самом деле мы имеем в виду, что множество {X} является определяющим/определяемым.

Суперключ — это набор атрибутов, определяющих каждый атрибут. CK (ключ-кандидат) — это суперключ, который не содержит суперключа меньшего размера. СК может быть много. Один CK может быть выбран в качестве PK (первичный ключ). (ПК не играют никакой роли в реляционной теории.)

Поскольку может быть только один PK, странно, что вы говорите о значении отношения или переменной, имеющей более одного. Возможно, вы имеете в виду два CK. Возможно, вы имеете в виду 2-атрибутный ПК.

Бывает, что если каждое значение подкортежа для набора атрибутов встречается только один раз, то это суперключ. (Каждый суперключ с одним атрибутом является CK, если {} не является CK, что происходит, когда отношение ограничено одним кортежем.) Таким образом, он определяет все атрибуты. Но в целом зависимости говорят нам, что такое суперключи и CK.

Таким образом, если каждый из A и B является CK, то каждый из них определяет C и D, т.е. {C} и {D}. И если {A,B} является ПК, то он определяет C и D, т.е. {C} и {D}. Бывает, что если и Т1, и Т2 определяются S, то и Т1 U Т2 тоже. Так или иначе, CK здесь определяют также {C,D}.

PS В английском языке есть двусмысленность, из-за которой неясно, означает ли «и C, и D функционально зависимы», что C является зависимым, а D зависимым или что {C,D} является зависимым. Аналогично для «функционально зависят как от A, так и от B». Так что понятнее сказать «набор ...», а не просто использовать «оба» и / или «и».

person philipxy    schedule 24.12.2015