Понимание 3NF: простой английский, пожалуйста

Я работаю над примером проблемы, в которой мы пытаемся определить, какое из следующих отношений находится в третьей нормальной форме (3NF). Вот отношения, которые нам даны:

R1 (ABCD)
ACD -> B AC -> D D -> C AC -> B

R2 (ABCD)
AB -> C ABD -> C ABC -> D AC -> D

R3 (ABCD)
C -> B A -> B CD -> A BCD -> A

R4 (ABCD)
C -> B B -> A AC -> D AC -> B

Я знаю, что R1 находится в 3NF, но мне трудно понять, что нужно делать, чтобы определить, что нарушает 3NF. Может ли кто-нибудь на простом английском разобрать каждое из отношений? Было бы очень полезно, если бы вы могли пошагово показать мне, как каждое отношение может нарушать одно из правил 3NF:

  1. X -> A, то A - подмножество X
  2. X - суперключ
  3. A является частью некоторого ключа для R

Для R1 я первым делом разбиваю его на замыкания:

ACD + = ABCD
AC + = ABCD
D + = C

ACD и AC - это суперключи, которые удовлетворяют правилу 2.
1. D -> C, но C не является подмножеством D. Правило 1. Нарушено.
2. D не является суперключом. Нарушено правило 2.
3. C является частью некоторого ключа для R. C является частью AC и ACD. Итак, правило 3 соблюдается?

Не уверен, что я даже делаю эти шаги правильно, поэтому, пожалуйста, разбейте их как можно проще для тех, кто борется с этими концепциями. Спасибо.


person raphnguyen    schedule 28.02.2013    source источник
comment
ACD - это суперключ, но это не неснижаемый суперключ. Это не кандидатный ключ. Нормальные формы требуют, чтобы вы сначала определили все ключи-кандидаты, потому что нормальные формы определяются (явно или неявно) функциональными зависимостями и ключами-кандидатами. Например, для 2NF не требуется зависимостей по частичному ключу. Это означает, что вы должны уметь различать первичные атрибуты (атрибуты, которые являются частью любого ключа-кандидата) и непростые атрибуты. В R1 есть два ключа-кандидата. AC - один из них. ACD не другой.   -  person Mike Sherrill 'Cat Recall'    schedule 05.07.2013
comment
Говоря простым языком, речь идет о зависимости от ключа, всего ключа и ничего, кроме ключа, так что помогите мне, Кодд.   -  person Joe    schedule 16.05.2015


Ответы (4)


Лучшее определение, которое я нашел для отношения в third normal form (3NF), выглядит следующим образом:

A relation schema R is in 3NF if, whenever a function dependency X -> A holds in R, either
    (a) X is a superkey of R, or
    (b) A is a prime attribute of R.

Теперь есть три определения, которые нуждаются в пояснении: _3 _, _ 4_ и prime attribute.

Для определений мы будем использовать примеры из отношения R1, чтобы описать их:

R1(ABCD)
ACD -> B   AC -> D   D -> C   AC -> B

key: Ключ - это атрибут, который определяет каждый атрибут отношения. Другими словами, это набор атрибутов, который даст вам все остальные атрибуты отношения, которых нет в наборе. В отношении R1 в приведенном выше примере ключи - это AC и AD. Почему AC ключ? Потому что, зная атрибуты A и C, вы можете определить остальные атрибуты, B и D. Почему AD ключ? По той же причине. A и D в конечном итоге определят B и C.

superkey: Супер-ключ - это, по сути, надмножество ключа. Суперключ всегда будет содержать ключ и, возможно, больше атрибутов. В предыдущем примере AC - это ключ. Таким образом, AC, ACD, ACB и т. Д. Являются суперключами. Обратите внимание, что ключ сам по себе является суперключом.

prime attribute: Основной атрибут - это, по сути, атрибут, являющийся частью ключа. Таким образом, A и C являются основными атрибутами, поскольку они являются частью ключа AC. Однако обратите внимание на разницу между ключом и супер-ключом. Для супер ключа ACB B не является основным атрибутом, поскольку B не является частью ключа. Просто подумайте о простом атрибуте как о подмножестве ключа.


Теперь давайте посмотрим на четыре отношения:

R1(ABCD)
ACD -> B   AC -> D   D -> C   AC -> B

R2(ABCD)
AB -> C   ABD -> C   ABC -> D   AC -> D

R3(ABCD)
C -> B   A -> B   CD -> A   BCD -> A

R4(ABCD)
C -> B   B -> A   AC -> D   AC -> B

Для каждого отношения мы запишем keys и prime attributes. Потом посмотрим, удовлетворяется ли определение.

R1:
keys: AC, AD
prime attributes: A, C, D

ACD -> B: Левая грань - это суперклавиша. Удовлетворяет (а).

AC -> D: Левая сторона - это клавиша и, следовательно, суперклавиша. Удовлетворяет (а).

D -> C: Левая грань не суперклавиша. Не удовлетворяет (а). Однако правая сторона - это первостепенный атрибут. Удовлетворяет (б).

AC -> B: Левая грань - это ключ. Удовлетворяет (а).

Во всех случаях выполняется либо (a), либо (b). Таким образом, R1 находится в 3NF.

R2:
keys: AB
prime attributes: A, B

AB -> C: Левая сторона - это клавиша и, следовательно, суперклавиша. Удовлетворяет (а).

ABD -> C: Левая грань - это суперклавиша. Удовлетворяет (а).

ABC -> D: Левая грань - это суперклавиша. Удовлетворяет (а).

AC -> D: Левая грань не суперклавиша. Не удовлетворяет (а). Правая сторона - не главный атрибут. Не удовлетворяет (б).

Поскольку (а) или (б) не выполняются во всех случаях, R2 не входит в 3NF.

R3:
keys: CD, 
prime attributes: C, D

C -> B: Левая грань не суперклавиша. Не удовлетворяет (а). Правая сторона - не главный атрибут. Не удовлетворяет (б).

Поскольку мы уже нашли случай, который не удовлетворяет ни (a), ни (b), мы можем сразу сделать вывод, что R3 не входит в 3NF.

R4:
keys: C
prime attributes: C

C -> B: Левая сторона - это клавиша и, следовательно, суперклавиша. Удовлетворяет (а).

B -> A: Левая грань не суперклавиша. Не удовлетворяет (а). Правая сторона - не главный атрибут. Не удовлетворяет (б).

Опять же, мы можем остановиться на этом, поскольку второй случай не удовлетворяет ни (а), ни (б). Отношение R4 отсутствует в 3NF.

person Mars    schedule 15.05.2015
comment
Это неправильное определение 3NF. Кроме того, определение касается всех FD, которые содержат, но вы проверяете только некоторые. Также на этот вопрос нельзя ответить, если нам не дадут прикрытие для удерживаемых ФД. - person philipxy; 16.11.2019

Объясню простыми словами:

Для данного отношения R1 (ABCD) функциональные зависимости следующие:

ACD -> B

AC -> D

D -> C

AC -> B

Состояние нахождения в 3NF

X-> Y, здесь X - это суперключ, если Y не является первичным атрибутом, иначе это может быть любой атрибут.

Основные атрибуты - это атрибуты, принадлежащие суперключу.

Нестандартные атрибуты - это атрибуты, не принадлежащие супер-ключу.

Вернемся к соотношению R1,

AC + = ABCD

AD + = ABCD

ACD + = ABCD и

D+=DC

Таким образом, в качестве супер ключей мы получаем AD, AC, ACD.

A, C, D - простые атрибуты, а B - непростые атрибуты.

ACD-> B

Эта функциональная зависимость находится в 3NF, поскольку ACD - это суперключ, а B - первичный атрибут.

AC->D

Эта функциональная зависимость также присутствует в 3NF, поскольку AC - это суперключ, а D - первичный атрибут.

D->C

Эта функциональная зависимость также находится в 3NF, поскольку D является основным атрибутом, а C также является основным атрибутом.

AC->B

Эта функциональная зависимость также находится в 3NF, поскольку AC является суперключом, а B - непервичным атрибутом.

  Thus,the relation is not in 3NF only when non-prime attributes
  does not depend on super key

Надеюсь это поможет!

person Community    schedule 09.05.2015

На простом английском языке вот 3 нормальные формы:

1NF: наличие «ключа» гарантирует, что таблица находится в 1NF (ключ должен быть там).

2NF: требуется, чтобы «каждый» неключевой атрибут зависел от «всего ключа» для обеспечения 2NF.

3NF: дополнительное требование, чтобы «каждый» неключевой атрибут зависел «только от ключа», обеспечивает 3NF.

Теперь для этого:

R1 (ABCD) ACD -> B AC -> D D -> C AC -> B

Посмотрите на эти ACD -> B и AC -> B: явно нарушает условие 2NF. Забудьте о 3НФ, этого отношения нет даже в 2НФ. "весь ключ" -> понятие не выдерживает.

Я думаю, вы доказали то же самое с помощью SET.

person Mayukh Roy    schedule 28.02.2013
comment
В R1 (B) есть только один непростой атрибут, и он зависит от всего ключа (AC). Может, я не понимаю, к чему вы клоните. - person Mike Sherrill 'Cat Recall'; 04.03.2013
comment
B не является ключевым атрибутом и, чтобы быть в 2NF, он должен зависеть от всего ключа. Если (ACD) является целым ключом, и ACD- ›B выполняется, отношение AC-› B нарушается: каждый неключевой атрибут зависит от всего ключа (ACD), а не от части ключа (AC), чтобы гарантировать 2NF. .. Если что-то не так, как я понимаю, будет здорово, если вы поделитесь. - person Mayukh Roy; 04.03.2013
comment
ACD не является ключевым элементом R1; AC есть. (AC - это один из ключей.) - person Mike Sherrill 'Cat Recall'; 04.03.2013

Упрощенное выражение 3NF: «Отношение находится в 3NF, если каждый атрибут, транзитивно зависящий от ключа, является ключевым атрибутом». 1 Ключевой атрибут - это атрибут, который является частью any ключ кандидата.

R 3 - один из наиболее простых для анализа в отношении 3NF.

R 3 (ABCD)

  • C -> B
  • A -> B
  • CD -> A
  • BCD -> А

Единственный возможный ключ - CD.

  • Есть ли транзитивная зависимость? Да, есть: CD-> A и A-> B. B транзитивно зависит от ключа.
  • Является ли B ключевым атрибутом? Нет, это не так; Компакт-диск - единственный ключ.

Итак, R 3 не входит в 3NF.

R 4 аналогичен. C - единственный возможный ключ.

  • Есть ли транзитивная зависимость? Да, есть: C-> B и B-> A.
  • Является ли А ключевым атрибутом? Нет, это не так; C - единственный ключ.

Итак, R 4 не входит в 3NF.

В R 1 ключи-кандидаты - это AC и AD.

  • Есть ли транзитивная зависимость? Да, есть: AC-> D и D-> C.
  • C - ключевой атрибут? Да, это.

Итак, R 1 находится в 3NF.


  1. «Новая нормальная форма для проектирования реляционных схем», Карло Заниоло, в ACM Transactions on Database Systems, Vol. 7, No. 3, September 1982, p 492. В более поздних работах основной атрибут используется для ссылки на атрибуты, которые являются частью любого ключа-кандидата, и неосновной атрибут для ссылки к атрибутам, которые не являются частью какого-либо ключа-кандидата.
person Mike Sherrill 'Cat Recall'    schedule 16.07.2013