3NF vs BCNF
Normalizacja to proces przeprowadzany w celu zminimalizowania nadmiarowości obecnych w danych w relacyjnych bazach danych. Ten proces dzieli głównie duże tabele na mniejsze tabele z mniejszą liczbą redundancji. Te mniejsze tabele będą ze sobą powiązane poprzez dobrze zdefiniowane relacje. W dobrze znormalizowanej bazie danych wszelkie zmiany lub modyfikacje danych będą wymagać modyfikacji tylko jednej tabeli. Trzecia postać normalna (3NF) została wprowadzona w 1971 r. Przez Edgara F. Codda, który jest także wynalazcą modelu relacyjnego i koncepcji normalizacji. Boyce-Codd Normal Form (BCNF) został wprowadzony w 1974 roku przez Codda i Raymonda F. Boyce'a.
Co to jest 3NF?
3NF to trzecia normalna forma używana w normalizacji relacyjnych baz danych. Zgodnie z definicją Codda mówi się, że tabela ma format 3NF, wtedy i tylko wtedy, gdy ta tabela ma drugą normalną postać (2NF), a każdy atrybut w tabeli, który nie należy do klucza kandydującego, powinien bezpośrednio zależeć od każdy klucz kandydujący w tej tabeli. W 1982 r. Carlo Zaniolo opracował odmiennie wyrażoną definicję 3NF. Tabele zgodne z 3NF zasadniczo nie zawierają anomalii, które występują podczas wstawiania, usuwania lub aktualizacji rekordów w tabeli.
Co to jest BCNF?
BCNF (znany również jako 3.5NF) to kolejna normalna forma używana w normalizacji relacyjnych baz danych. Został wprowadzony, aby uchwycić niektóre anomalie, które nie są uwzględnione przez 3NF. Mówi się, że tabela znajduje się w BCNF, i tylko wtedy, gdy dla każdej zależności formy A → B, które nie są trywialne, A jest superkluczem. Dekompozycja tabeli, która nie jest w normalnej formie BCNF, nie gwarantuje produkcji tabel w formie BCNF (przy jednoczesnym zachowaniu zależności, które były obecne w oryginalnej tabeli).
Jaka jest różnica między 3NF a BCNF?
Zarówno 3NF, jak i BCNF są normalnymi formularzami używanymi w relacyjnych bazach danych w celu zminimalizowania nadmiarowości w tabelach. W tabeli, która jest w normalnej formie BCNF, dla każdej nietrywialnej zależności funkcjonalnej formy A → B, A jest superkluczem, podczas gdy tabela zgodna z 3NF powinna znajdować się w 2NF, a każda nie-pierwsza atrybut powinien bezpośrednio zależeć od każdego klucza kandydata w tej tabeli. BCNF jest uważany za silniejszą postać normalną niż 3NF i został opracowany w celu wychwycenia niektórych anomalii, których 3NF nie mógł uchwycić. Uzyskanie tabeli zgodnej z formularzem BCNF będzie wymagać dekompozycji tabeli znajdującej się w 3NF. Ten rozkład spowoduje dodatkowe operacje łączenia (lub produkty kartezjańskie) podczas wykonywania zapytań. Zwiększy to czas obliczeń. Z drugiej strony tabele zgodne z BCNF miałyby mniej nadmiarowości niż tabele zgodne tylko z 3NF. Ponadto przez większość czasu możliwe jest uzyskanie tabeli zgodnej z 3NF bez utrudniania zachowania zależności i bezstratnego łączenia. Ale nie zawsze jest to możliwe w przypadku BCNF.