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. Za dużo kolumn w jednej tabeli), mogą wystąpić anomalie bazy danych. Jeśli tabele są dwie małe (tj. Baza danych składa się z wielu mniejszych tabel), zapytanie byłoby nieefektywne. Normalizacja i denormalizacja to dwa procesy, które służą do optymalizacji wydajności bazy danych. Normalizacja minimalizuje nadmiarowość występującą w tabelach danych. Denormalizacja (odwrócenie normalizacji) dodaje zbędne dane lub dane grupowe.
Co to jest normalizacja?
Normalizacja to proces przeprowadzany w celu zminimalizowania nadmiarowości występujących w danych w relacyjnych bazach danych. Ten proces polega głównie na podzieleniu dużych tabel na mniejsze tabele z mniejszą liczbą nadmiarowości (zwane „formularzami 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 będzie wymagała modyfikacji tylko jednej tabeli. Pierwsza forma normalna (1NF), druga postać normalna (2NF) i trzecia postać normalna (3NF) zostały wprowadzone przez Edgara F. Codda. Boyce-Codd Normal Form (BCNF) została wprowadzona 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 powtarzających się rekordów) i nie zawiera atrybutów o wartościach relacyjnych (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 inne niż główne) powinien w pełni zależeć od któregokolwiek z kluczy kandydujących w tabeli. Zgodnie z definicją Codda, mówi się, że tabela jest w 3NF, wtedy i tylko wtedy, gdy ta tabela jest w drugiej postaci normalnej (2NF) i 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 tej tabeli. BCNF (znany również jako 3.5NF) wychwytuje niektóre anomalie, którymi nie zajmuje się 3NF.
Co to jest denormalizacja?
Denormalizacja jest procesem odwrotnym do procesu normalizacji. Denormalizacja działa poprzez dodanie nadmiarowych danych lub grupowanie danych w celu optymalizacji wydajności. Mimo że dodanie nadmiarowych danych wydaje się nieproduktywne, czasami denormalizacja jest bardzo ważnym procesem mającym na celu przezwyciężenie niektórych niedociągnięć w oprogramowaniu do relacyjnych baz danych, które mogą powodować poważne kary za wydajność w przypadku znormalizowanych baz danych (nawet dostrojonych pod kątem wyższej wydajności). Dzieje się tak, ponieważ łączenie kilku relacji (które są wynikiem normalizacji) w celu uzyskania wyniku zapytania może czasami 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 zupełnie przeciwstawne procesy. - Normalizacja to proces dzielenia większych tabel na mniejsze, co zmniejsza ilość zbędnych danych, podczas gdy denormalizacja to proces dodawania nadmiarowych danych w celu optymalizacji wydajności. - Normalizacja ma na celu zapobieganie anomaliom w bazach danych. - Denormalizacja jest zwykle przeprowadzana w celu poprawy wydajności odczytu bazy danych, ale z powodu dodatkowych ograniczeń używanych do denormalizacji zapisy (tj. Operacje wstawiania, aktualizowania i usuwania) mogą stać się wolniejsze. Dlatego zdenormalizowana baza danych może oferować gorszą wydajność zapisu niż znormalizowana baza danych. - Często zaleca się, abyś „normalizował, aż boli, denormalizuj, aż zadziała”. |