Преобразование отношения в НФБК

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

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. Буду очень признателен за любую помощь/мысли на всех этапах!


person doubleit    schedule 22.03.2020    source источник
comment
Ответы на вопросы (а) и (б) выглядят правильными; ответ на (с) неверен. Существует транзитивная зависимость b ⟶ o ⟶ r, которая не позволяет R1 находиться в НФБК. Пара {b, s} ⟶ n и n ⟶ b также означает, что R1 не находится в НФБК. Эта часть находится в 3NF, IIRC, но не в BCNF. Вы не можете просто выбросить FD. Вы должны сохранить их всех.   -  person Jonathan Leffler    schedule 22.03.2020


Ответы (1)


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

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

Вы правы, говоря, что отношение не находится ни во 2НФ, ни в 3НФ.

Предлагаемая вами декомпозиция не создает подсхем в 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 также находятся в НФБК, а зависимость n → b в R1 нарушает БНФ.

person Renzo    schedule 22.03.2020
comment
Спасибо за ваш ответ. Если n -> b в R1 нарушает БКНФ, не означает ли это, что это отношение (R1,R2,R3) не удовлетворяет БКНФ? - person doubleit; 23.03.2020
comment
Да. Как я уже сказал, разложение находится в третьей нормальной форме, а не в НФБК. Бывают случаи, когда невозможно найти BCNF без потери зависимостей. - person Renzo; 23.03.2020