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