2

Я учусь для моего экзамена базы данных, и я не уверен, что один вопрос, который идет следующим образом:Первичный ключ отношения с круговыми функциональных зависимостей

Учитывая отношение 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, что является циклической зависимостью. Я думал о двух возможностях:

  1. C является основным ключом, и мы можем использовать его для поиска A и B (C -> AB);
  2. 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. Например, если кто-то вставляет новую строку в одну из таблиц, то соединение может ввести недопустимую строку.

Я слишком много думаю? Я иду в неправильном направлении?

Спасибо за вашу помощь :)

+1

Не пропустите школу. – Glenn

ответ

1
AB -> C 
A -> DE 
C -> AB 
B -> FGH 
D -> IJ 
D -> CBE 

Я предположу, что ФД в ваших отношениях, как известно, именно те, в транзитивное замыкание F (Что вы на самом деле рассказывали о F визави на ваше отношение?)

{} определяется только тривиально.

{A} определяет DE, который определяет IJCB, который определяет FGH. CK.
{B} определяет FGH. Не CK.
{C} определяет AB. CK.
{D} определяет IJCBE. CK.
Другие синглтонные наборы просто определяют тривиально.

Правильные надмножества A, C и D не являются CK.
Другие собственные надмножества имеют B, E, F, G, H, I, J, которые не могут определять A, C или D. Не CKs.

Это учет всех подмножеств атрибутов.
Таким образом, CK являются {A}, {B} и {D}.

Какие ошибки у меня есть AB -> C и C -> AB, что является круговой зависимостью.

Зачем вам это неудобно? Просто следуйте правилам, которые вам даны. Просмотрите определение CK и как определить CK из FD. Исключить нетехнические термины.

реальный первичный ключ этой связи

«Первичный ключ» не является полезным понятие нормализации. (Я не могу сделать много смысла, что следует.)

эта таблица не 3NF так

Я не вижу какого-либо определения 3NF используются в ваших рассуждениях. Вы, кажется, используете определение BCNF, но не правильно.

предполагая первичный ключ ABC
кандидат ключей (ABC) здесь

Решайтесь. Есть ли один ключ-кандидат {A, B, C} или три ключа-кандидата {A}, {B} и {C}? Это две разные ситуации.

не

это, кажется, в 2НФЕ потому что не простой атрибут [...] может быть не получить, используя подмножество атрибутов ключей-кандидатов

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

Ознакомьтесь с определениями нормальных форм и определений, от которых они зависят.

Смежные вопросы