Różnica między normalizacją a denormalizacją

Normalizacja a denormalizacja

Relacyjne bazy danych składają się z relacji (powiązanych tabel). Tabele składają się z kolumn. Jeśli tabele są dwie duże (tj. Zbyt wiele kolumn w jednej tabeli), mogą wystąpić anomalie w bazie danych. Jeśli tabele są dwa małe (tzn. Baza danych składa się z wielu mniejszych tabel), byłoby to nieefektywne przy wyszukiwaniu. Normalizacja i denormalizacja to dwa procesy służące do optymalizacji wydajności bazy danych. Normalizacja minimalizuje nadmiarowości obecne w tabelach danych. Denormalizacja (odwrotność normalizacji) dodaje dane redundantne lub dane grupowe.

Co to jest normalizacja?

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 (zwane „formami normalnymi”). Te mniejsze tabele będą ze sobą powiązane poprzez dobrze zdefiniowane relacje. W dobrze znormalizowanej bazie danych każda zmiana lub modyfikacja danych wymaga modyfikacji tylko jednej tabeli. Pierwszą postać normalną (1NF), drugą postać normalną (2NF) i trzecią postać normalną (3NF) wprowadził Edgar F. Codd. Boyce-Codd Normal Form (BCNF) został wprowadzony w 1974 roku przez Codda i Raymonda F. Boyce'a. Zdefiniowano wyższe formy normalne (4NF, 5NF i 6NF), ale są one rzadko używane.

Tabela zgodna z 1NF zapewnia, że ​​faktycznie reprezentuje relację (tj. Nie zawiera żadnych rekordów, które się powtarzają) i nie zawiera żadnych atrybutów o wartości relacyjnej (tj. Wszystkie atrybuty powinny mieć wartości atomowe). Aby tabela była zgodna z 2NF, powinna być zgodna z 1NF, a każdy atrybut, który nie jest częścią żadnego klucza kandydującego (tj. Atrybuty niepierwotne), powinien w pełni zależeć od dowolnego z kluczy kandydujących w tabeli. 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żdego klucz kandydujący z tej tabeli. BCNF (znany również jako 3.5NF) wychwytuje niektóre anomalie, których nie rozwiązuje 3NF.

Co to jest Denormalizacja?

Denormalizacja jest odwrotnym procesem procesu normalizacji. Denormalizacja polega na dodawaniu nadmiarowych danych lub grupowaniu danych w celu optymalizacji wydajności. Chociaż dodawanie zbędnych danych wydaje się nieproduktywne, czasami denormalizacja jest bardzo ważnym procesem w celu przezwyciężenia niektórych niedociągnięć w oprogramowaniu relacyjnych baz danych, które mogą wiązać się z wysokimi karami za wydajność w przypadku znormalizowanych baz danych (nawet dostrojonych pod kątem wyższej wydajności). Jest tak, ponieważ łączenie kilku relacji (będących wynikiem normalizacji) w celu uzyskania wyniku zapytania może czasem być powolne, w zależności od faktycznej fizycznej implementacji systemów baz danych.

Jaka jest różnica między normalizacją a denormalizacją?

- Normalizacja i denormalizacja to dwa procesy, które są całkowicie przeciwne.

- Normalizacja to proces dzielenia większych tabel na mniejsze, co ogranicza zbędne dane, podczas gdy denormalizacja to proces dodawania zbędnych danych w celu optymalizacji wydajności.

- Normalizacja jest przeprowadzana w celu uniknięcia anomalii baz danych.

- Denormalizacja jest zwykle przeprowadzana w celu poprawy wydajności odczytu bazy danych, ale z powodu dodatkowych ograniczeń wykorzystywanych do denormalizacji zapisy (tj. Operacje wstawiania, aktualizacji i usuwania) mogą ulec spowolnieniu. Dlatego zdenormalizowana baza danych może zaoferować gorszą wydajność zapisu niż znormalizowana baza danych.

- Często zaleca się, aby „normalizować, dopóki nie boli, denormalizować, aż zadziała”.