3NF против BCNF
Нормализация - это процесс, который выполняется для минимизации избыточности, присутствующей в данных в реляционных базах данных. Этот процесс будет в основном делить большие таблицы на меньшие таблицы с меньшим количеством избыточностей. Эти меньшие таблицы будут связаны друг с другом через четко определенные отношения. В хорошо нормализованной базе данных любое изменение или модификация данных потребует изменения только одной таблицы. Третья нормальная форма (3NF) была введена в 1971 году Эдгаром Ф. Коддом, который также является изобретателем реляционной модели и концепции нормализации. Нормальная форма Бойса-Кодда (BCNF) была введена в 1974 году Коддом и Рэймондом Ф. Бойсами.
Что такое 3NF?
3NF - третья нормальная форма, используемая для нормализации реляционных баз данных. Согласно определению Кодда, таблица называется 3NF, если и только если эта таблица находится во второй нормальной форме (2NF), и каждый атрибут в таблице, который не принадлежит ключу-кандидату, должен напрямую зависеть от ключ каждого кандидата этой таблицы. В 1982 году Карло Дзаниоло дал иное выражение для 3NF. Таблицы, соответствующие 3NF, обычно не содержат аномалий, возникающих при вставке, удалении или обновлении записей в таблице..
Что такое BCNF?
BCNF (также известный как 3.5NF) - еще одна нормальная форма, используемая в нормализации реляционных баз данных. Он был введен для выявления некоторых аномалий, которые не были учтены 3NF. Говорят, что таблица находится в BCNF, если и только если для каждой нетривиальной зависимости вида A → B A является суперключом. Декомпозиция таблицы, которая не находится в нормальной форме BCNF, не гарантирует создание таблиц в форме BCNF (при сохранении зависимостей, которые присутствовали в исходной таблице).
В чем разница между 3NF и BCNF?
И 3NF, и BCNF являются обычными формами, которые используются в реляционных базах данных для минимизации избыточности в таблицах. В таблице в нормальной форме BCNF для каждой нетривиальной функциональной зависимости вида A → B A является суперключом, тогда как таблица, соответствующая 3NF, должна быть в 2NF, а каждая не простая Атрибут должен напрямую зависеть от каждого ключа-кандидата в этой таблице. BCNF считается более сильной нормальной формой, чем 3NF, и он был разработан для улавливания некоторых аномалий, которые не могли быть обнаружены 3NF. Для получения таблицы, соответствующей форме BCNF, потребуется разложить таблицу, находящуюся в 3NF. Эта декомпозиция приведет к дополнительным операциям соединения (или декартовым продуктам) при выполнении запросов. Это увеличит время вычислений. С другой стороны, таблицы, которые соответствуют BCNF, будут иметь меньше избыточностей, чем таблицы, которые соответствуют только 3NF. Кроме того, большую часть времени можно получить таблицу, которая соответствует 3NF, не препятствуя сохранению зависимостей и объединению без потерь. Но это не всегда возможно с BCNF.