Я учусь для моего экзамена базы данных, и я не уверен, что один вопрос, который идет следующим образом:Первичный ключ отношения с круговыми функциональных зависимостей
Учитывая отношение R = {A, B, С, D, Е, F, G, Н, I} и набор функциональных зависимостей
Р = {АВ -> С,
а -> ДЕ,
С -> АВ,
В -> FGH,
D -> IJ,
D -> СВЕ }
Под какой (нормальной) форме это отношение?
Во-первых, я знаю, что мне нужно найти все ключи-кандидаты. Если посмотреть вправо, я вижу, что каждый атрибут R появляется справа, поэтому нетривиально, что любой отдельный атрибут R является ключом-кандидатом. Поэтому, глядя на размер левой руки, появляются только A, B, C, D, поэтому один или некоторые из этих атрибутов должны появляться в ключах-кандидатах.
Таким образом, использование работ A, C и D (подробности пропущены), но использование B одного не делает. Рассмотрение использования двухэквивалентного ket бесполезно, поскольку любой ключ, который не содержит A, C или D, не «вернет нас» к R. Exemple, BE позволяет нам находить B, E, F, G, H, но затем мы не можем двигаться дальше, поэтому не все атрибуты R найдены.
Кроме того, использование любой комбинации с A, C или D бесполезно, поскольку оно содержит подмножество (один атрибут), который является частью ключа-кандидата (один атрибут). Например, AB можно свести к A, а затем все атрибуты R можно найти.
Какие ошибки у меня AB -> C и C -> AB, что является циклической зависимостью. Я думал о двух возможностях:
- C является основным ключом, и мы можем использовать его для поиска A и B (C -> AB);
- AB может быть уменьшен до А (как сказано выше), и с ним можно найти C.
Но это очень легко видеть, что AB должен быть уникальным и C также должен быть уникальным.
Давайте использовать только AB -> С. Мы можем иметь следующие ассоциации:
11 -> 1 (А = 1, В = 1, С = 1)
12 -> 1
Но, если мы снова вставьте правило C -> AB, мы находим:
1 -> 11
1 -> 12
, которые не могут держать.
Так что C должен быть уникальным.
То же самое, если мы будем рассматривать только C -> AB, а затем снова вставьте правило AB -> C.
Я начинаю думать, что это уловка, и что реальный первичный ключ этого соотношения ABC, чтобы обеспечить уникальность комбинаций AB и C. затем мы имеем следующие правила:
F '= {
ABC -> DEFGH
D -> IJ
D -> CBE
}
Правильно ли это? Как насчет другой круговой зависимости, т. Е. C -> D (первое правило), D -> C (третье правило) и C -> D (возврат к первому правилу)? Я просто не забочусь об этом?
Если я не забочусь о нем (и предполагая, что первичный ключ является ABC), то кажется очевидным, что эта таблица не находится в 3NF, поскольку ABC определяет D (который здесь является не основным атрибутом), а D определяет IJ, два нечетных атрибута. Но, похоже, он находится в 2NF, потому что не может быть получена не первичный атрибут (D, E, F, G, H, I, J) с использованием подмножества атрибутов ключей-кандидатов (здесь ABC).
Конечно, я мог бы рассматривать первичный ключ как A, C или D и разделять AB -> C и C -> AB в двух отдельных отношениях, но я не думаю, что объединение этих двух таблиц всегда будет уважать правила AB -> C и C -> AB. Например, если кто-то вставляет новую строку в одну из таблиц, то соединение может ввести недопустимую строку.
Я слишком много думаю? Я иду в неправильном направлении?
Спасибо за вашу помощь :)
Не пропустите школу. – Glenn