
Давайте обсудим различия между 3NF и BCNF с помощью сравнительной таблицы, показанной ниже.
Сравнительная таблица
Основа для сравнения | 3NF | BCNF |
---|---|---|
концепция | Не первичный атрибут не должен быть транзитивно зависимым от ключа-кандидата. | Для любой тривиальной зависимости в отношении R, скажем, X-> Y, X должен быть суперключем отношения R. |
зависимость | 3NF можно получить, не жертвуя всеми зависимостями. | Зависимости не могут быть сохранены в BCNF. |
декомпозиция | Без потерь разложение может быть достигнуто в 3NF. | В BCNF трудно добиться разложения без потерь. |
Определение 3NF
Таблица или отношение считается находящимся в третьей нормальной форме, только если таблица уже находится в 2NF и нет непростого атрибута, транзитивно зависимого от ключа-кандидата отношения.
Итак, прежде чем я коснусь процесса нормализации таблицы в 3NF, позвольте мне обсудить ключ-кандидат. Ключ-кандидат - это минимальный супер-ключ, то есть супер-ключ с минимальными атрибутами, которые могут определять все атрибуты отношения. Итак, в процессе нормализации вашей таблицы, во-первых, вы узнаете ключ-кандидат данного отношения. Атрибуты, которые являются частью ключа-кандидата, являются простыми атрибутами, а атрибуты, которые не являются частью ключа-кандидата, являются непростыми атрибутами .
Теперь, если мы имеем отношение R (A, B, C, D, E, F) и имеем следующие функциональные зависимости для отношения R.

Таблица в 2NF, так как никакой не простой атрибут частично зависит от ключа-кандидата
Но среди предоставленных функциональных зависимостей наблюдается транзитивная зависимость, поскольку атрибут F не зависит напрямую от ключа-кандидата AB . Вместо этого атрибут F транзитивно зависит от ключа-кандидата AB через атрибут D. До атрибута D есть какое-то значение, которое мы можем достичь до значения атрибута F, от ключа-кандидата AB. В случае, если значение атрибута D равно NULL, мы никогда не сможем найти / найти значение F с помощью ключа-кандидата AB. Это причина, по которой 3NF требует убрать транзитивную зависимость из отношений.
Итак, чтобы удалить эту транзитивную зависимость, нам нужно разделить отношение R. При разделении отношения всегда помещайте ключ-кандидат и все атрибуты, которые зависят от этого ключа-кандидата, в первое отношение. В следующем разделенном отношении мы поместим атрибут, который вызывает транзитивную зависимость, а также атрибуты, которые зависят от него, во второе отношение.

Определение BCNF
BCNF считается сильнее, чем 3NF. Отношение R в BCNF должно быть в 3NF . И там, где нетривиальная функциональная зависимость A -> B сохраняется в отношении R, тогда A должен быть суперключем отношения R. Как мы знаем, Super key - это ключ, который имеет один атрибут или набор атрибутов, которые определяют всю атрибуты отношения.
Теперь давайте перейдем к примеру, чтобы лучше понять BCNF. Предположим, у нас есть отношение R (A, B, C, D, F), которое имеет следующие функциональные зависимости.

Но одна функциональная зависимость, т. Е. D -> F, нарушает определение BCNF, согласно которому, если D -> F существует, то D должен быть супер-ключом, что здесь не так. Таким образом, мы разделим отношение R.

Ключевые различия между 3NF и BCNF
- 3NF утверждает, что не первичный атрибут не должен быть транзитивно зависимым от ключа-кандидата отношения. С другой стороны, BCNF утверждает, что если для отношения существует тривиальная функциональная зависимость X -> Y; тогда X должен быть супер ключом.
- 3NF можно получить, не жертвуя зависимостью отношения. Тем не менее, зависимость не может быть сохранена при получении BCNF.
- 3NF может быть достигнуто без потери какой-либо информации из старой таблицы, тогда как при получении BCNF мы можем потерять некоторую информацию из старой таблицы.
Заключение:
BCNF является гораздо более строгим, чем 3NF, что больше помогает в нормализации таблицы. Отношение в 3NF имеет минимальную оставшуюся избыточность, которая дополнительно удаляется BCNF.