Изменение отношения в BCNF - PullRequest
0 голосов
/ 22 марта 2020

Я изучаю СУБД и нормализацию, и я наткнулся на следующее упражнение. Для следующей задачи:

Consider the relation R(b,e,s,t,r,o,n,g) with functional dependencies

         b,s -> e,r,o,n
         b -> t
         b -> g
         n -> b  
         o -> r

     (a) identify candidate keys

     (b) identify prime attributes

     (c) state the highest normal form of this table

Я думаю, что (a) будет {b, s}, поскольку они идентифицируют все атрибуты без избыточности.

(b) также будет {b, s}, поскольку они составляют ключи-кандидаты (a).

(c) будет 1-NF по нескольким причинам. Он не удовлетворяет 2-NF, поскольку существуют частичные зависимости n -> b. Вышеупомянутая функциональная зависимость зависит только от b, а не от s, следовательно, частичная зависимость. Он не удовлетворяет 3-NF, поскольку o -> r указывает, что непростой атрибут зависит от другого непростого атрибута. BCNF не выполняется, так как 3-NF не выполняется.

Наконец, если бы я изменил таблицу до тех пор, пока она не будет в BCNF, разделил бы отношение R на:

R1(b, e, s, r, o, n) with b, s -> e, r, o, n 

и

R2(b, t, g) with b -> t and b -> g

, исключая n -> b и o -> r, удовлетворяющие BCNF?

В последней части меня больше всего смущает вопрос об удовлетворении BCNF. Я был бы очень признателен за любую помощь / мысли на всех этапах!

1 Ответ

2 голосов
/ 22 марта 2020

Схема имеет два возможных ключа: {b, s} и {n, s}. Вы можете убедиться, что оба ключа являются ключами, вычисляющими замыкания двух наборов атрибутов.

Итак, основными атрибутами являются b, s и n.

правильно сказать, что отношение не в 2NF и не в 3NF.

Предлагаемое разложение не приводит к подсхамам в BCNF, поскольку в R1 зависимость o → r сохраняется, а o не является суперключем R1.

«Классический» алгоритм декомпозиции для BCNF создает следующую нормализованную схему:

R1(b g t)
R2(o r)
R3(b n)
R4(e n o s)

, но зависимости

b s → e
b s → n
b s → o
b s → r

не сохраняются при декомпозиции .

Разложение в 3NF, которое сохраняет данные и зависимости, выглядит следующим образом:

R1(b e n o s) 
R2(b g t)    
R3(o r)

В этом разложении R2 и R3 также находятся в BCNF, тогда как зависимость n → b в R1 нарушает BCNF.

...