Определение того, является ли отношение 3НФ или 2НФ

Из книги «Системы управления базами данных»: задано отношение SNLRWH (каждая буква обозначает атрибут) и следующие функциональные зависимости:

  • S->SNLRWH (S — ПК)
  • R->W

Моя попытка:

  • Во-первых, это не 3NF: для второго FD ни R не содержит W, ни R не содержит ключа, ни W не является частью ключа.
  • Во-вторых, это является/не 2NF. Если мы исследуем второй FD, W зависит от R, который, в свою очередь, не является частью ключа. ЗАСТРЕЛ.

person ToniAz    schedule 17.05.2013    source источник


Ответы (2)


2NF нарушается, если какое-то правильное подмножество ключа-кандидата появляется как детерминант в левой части одной из ваших (нетривиальных) зависимостей. Спросите себя, является ли какой-либо из ваших определителей подмножеством ключа-кандидата.

Обычно 2НФ нарушается только тогда, когда отношение имеет составной ключ — ключ с более чем одним атрибутом. Технически возможно, чтобы отношение только с простыми ключами (ключами с одним атрибутом) нарушило 2НФ, если пустое множество (∅) оказалось определяющим. Такие случаи довольно необычны и редко считаются достойными рассмотрения, потому что они явно «неправильные». Для полноты картины приведем забавный пример этого особого случая. В следующем отношении Circumference и Diameter являются возможными ключами. Зависимость, нарушающая 2NF, представляет собой ∅ -> Pi, отношение длины окружности к диаметру.

Отношение CIRCLE

person nvogel    schedule 17.05.2013
comment
Никакой определитель не является подмножеством правильного подмножества ключа-кандидата, один det равен ключу-кандидату, а другой даже не является подмножеством. Таким образом, отношение равно 2НФ. - person ToniAz; 18.05.2013
comment
@ToniAz {}->Pi, поэтому определитель {} является правильным надмножеством CK {окружности} и CK {диаметра}. Таким образом, Pi, атрибут, не являющийся простым числом, частично функционально зависит от каждого из CK. Таким образом, 2NF нарушается. - person philipxy; 10.06.2015
comment
@philipxy, вы правы, но я предполагаю, что предыдущий комментарий ToniAz является ссылкой на его пример, а не на мой. - person nvogel; 10.06.2015

2NF имеет дело с частичными ключевыми зависимостями. Чтобы отношение не прошло тест на 2NF, оно должно иметь по крайней мере один ключ-кандидат, который имеет по крайней мере два столбца.

Поскольку ваше отношение имеет только один ключ-кандидат, а этот ключ-кандидат имеет только один столбец, у вас не может быть частичной зависимости ключа. Он проходит тест на 2NF.

person Mike Sherrill 'Cat Recall'    schedule 17.05.2013
comment
-ve было бы очень сурово ;-) - person nvogel; 18.05.2013
comment
Это верно только для случаев, когда нет FD {}->{A}, т. е. когда нет столбца, каждая строка которого содержит одно и то же значение для A, так что все FD {B}->{A} заполнены. (Ответ nvogel.) - person philipxy; 02.03.2019