Рекомендуем, 2024

Выбор редакции

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

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

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

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

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

Определение 3NF

Таблица или отношение считается находящимся в третьей нормальной форме, только если таблица уже находится в 2NF и нет непростого атрибута, транзитивно зависимого от ключа-кандидата отношения.

Итак, прежде чем я коснусь процесса нормализации таблицы в 3NF, позвольте мне обсудить ключ-кандидат. Ключ-кандидат - это минимальный супер-ключ, то есть супер-ключ с минимальными атрибутами, которые могут определять все атрибуты отношения. Итак, в процессе нормализации вашей таблицы, во-первых, вы узнаете ключ-кандидат данного отношения. Атрибуты, которые являются частью ключа-кандидата, являются простыми атрибутами, а атрибуты, которые не являются частью ключа-кандидата, являются непростыми атрибутами .

Теперь, если мы имеем отношение R (A, B, C, D, E, F) и имеем следующие функциональные зависимости для отношения R.

Наблюдая за функциональными зависимостями, мы можем заключить, что AB является ключом-кандидатом для отношения R, потому что с помощью ключа AB мы можем искать значение для всех атрибутов в отношении R. Таким образом, A, B становятся простыми атрибутами, так как они вместе составляют ключ-кандидат. Атрибуты 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, тогда A должен быть суперключем отношения R. Как мы знаем, Super key - это ключ, который имеет один атрибут или набор атрибутов, которые определяют всю атрибуты отношения.

Теперь давайте перейдем к примеру, чтобы лучше понять BCNF. Предположим, у нас есть отношение R (A, B, C, D, F), которое имеет следующие функциональные зависимости.

Наблюдая за отношением R, мы можем сказать, что A и BF являются подходящими ключами отношения R, потому что они одни могут искать значение для всех атрибутов в отношении R. Таким образом, A, B, F являются основными атрибутами, тогда как, C и D являются непростыми атрибутами. В функциональных зависимостях, представленных выше, транзитивной зависимости не наблюдается. Следовательно, таблица R находится в 3NF.

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

Теперь таблицы R1 и R2 находятся в BCNF. Отношение R1 имеет два ключа- кандидата A и B, тривиальную функциональную зависимость R1, то есть A-> BCD и B-> ACD, которые выполняются для BCNF, поскольку A и B являются супер-ключами для отношения. Отношение R2 имеет D в качестве ключа-кандидата, и функциональная зависимость D -> F также сохраняется для BCNF, поскольку D является Супер Ключом.

Ключевые различия между 3NF и BCNF

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

Заключение:

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

Top