Разница между 3NF и BCNF

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 13 Май 2024
Anonim
Difference between 3NF and BCNF, De-normalization
Видео: Difference between 3NF and BCNF, De-normalization

Содержание


нормализация это метод, который удаляет избыточность из отношения, тем самым сводя к минимуму аномалии вставки, удаления и обновления, которые ухудшают производительность баз данных. В этой статье мы будем различать две высшие нормальные формы, то есть 3NF и BCNF. Основное различие между 3NF и BCNF заключается в том, что 3NF исключая транзитивную зависимость из отношения и таблицы, которая должна быть в BCNF, тривиальная функциональная зависимость X-> Y в отношении должна сохраняться, только если X является суперключем.

Давайте обсудим различия между 3NF и BCNF с помощью сравнительной таблицы, показанной ниже.

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Вывод

Сравнительная таблица

Основа для сравнения3NFBCNF
концепцияНе первичный атрибут не должен быть транзитивно зависимым от ключа-кандидата.Для любой тривиальной зависимости в отношении 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 является суперключом.

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

Вывод:

BCNF является гораздо более строгим, чем 3NF, что больше помогает в нормализации таблицы. Отношение в 3NF имеет минимальную оставшуюся избыточность, которая дополнительно удаляется BCNF.