Лучшее определение, которое я нашел для отношения в 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