Я читал много разных источников о том, как различать отношения в 3NF/BCNF. И я до сих пор это мое понимание ...
Я буду использовать это отношение в качестве примера...
R = {A, B, C, D, E}
а также
F = {A -> B, B C - > E, E D -> A}
.
Сначала мы должны найти ключи отношения. Это видео помогло мне в этом. И я получил
Keys = {ACD, BCD, CDE}
Теперь, чтобы убедиться, что R
находится в BCNF, мы должны убедиться, что левая часть каждой функциональной зависимости в F
является одной из Keys
. Мы сразу понимаем, что это не так, потому что первый FD — это A -> B
, а A
не является одним из ключей. Значит, его нет в BCNF.
Теперь, чтобы убедиться, что R
находится в 3NF, мы должны убедиться, что левая часть каждой функциональной зависимости в F
является одной из Keys
ИЛИ правой частью каждой функциональная зависимость в F
является подмножеством одного из Keys
. Если вы посмотрите на правую часть каждого FD, это B
, E
и A
. Каждый из них является подмножеством Key
, так что это означает, что он находится в 3NF.
Итак, это один из редких случаев (согласно вики), когда отношение находится в 3NF
, но не в BCNF
. Правилен ли этот метод? Это надежно? Я что-то упустил?