Normalizacja DBMS: Przykład bazy danych 1NF, 2NF, 3NF

Co to jest normalizacja bazy danych?

Normalizacja to technika projektowania baz danych, która zmniejsza nadmiarowość danych i eliminuje niepożądane cechy, takie jak anomalie wstawiania, aktualizacji i usuwania. Reguły normalizacji dzielą większe tabele na mniejsze i łączą je za pomocą relacji. Celem normalizacji w SQL jest wyeliminowanie zbędnych (powtarzających się) danych i zapewnienie logicznego przechowywania danych.

Wynalazca model relacyjny Edgar Codd zaproponował teorię normalizacji danych poprzez wprowadzenie pierwszej postaci normalnej i kontynuował rozszerzanie teorii o drugą i trzecią postać normalną. Later dołączył do Raymonda F. Boyce'a, aby opracować teorię postaci normalnej Boyce'a-Codda.

Rodzaje postaci normalnych w systemie DBMS

Oto lista formularzy normalnych w SQL:

  • 1NF (pierwsza postać normalna): Zapewnia, że ​​tabela bazy danych jest zorganizowana w taki sposób, że każda kolumna zawiera wartości atomowe (niepodzielne), a każdy rekord jest unikalny. Eliminuje to powtarzające się grupy, a tym samym strukturyzuje dane w tabelach i kolumnach.
  • 2NF (druga postać normalna): Opiera się na 1NF przez Musimy usunąć zbędne dane z tabeli, która jest stosowana do wielu wierszy. i umieszczenie ich w oddzielnych tabelach. Wymaga to, aby wszystkie atrybuty inne niż klucze były w pełni funkcjonalne na kluczu podstawowym.
  • 3NF (trzecia postać normalna): Rozszerza 2NF, zapewniając, że wszystkie atrybuty niekluczowe są nie tylko w pełni funkcjonalne na kluczu podstawowym, ale także niezależne od siebie. Eliminuje to zależność przechodnią.
  • BCNF (postać normalna Boyce’a-Codda): Udoskonalenie 3NF, które usuwa anomalie nieobsługiwane przez 3NF. Wymaga, aby każdy wyznacznik był kluczem kandydującym, zapewniając jeszcze bardziej rygorystyczne przestrzeganie zasad normalizacji.
  • 4NF (czwarta postać normalna): Rozwiązuje zależności wielowartościowe. Zapewnia to, że w rekordzie nie ma wielu niezależnych, wielowartościowych faktów na temat jednostki.
  • 5NF (piąta postać normalna): Znany również jako „forma normalna łączenia projekcji” (PJNF). Dotyczy rekonstrukcji informacji z mniejszych, różnie ułożonych fragmentów danych.
  • 6NF (szósta postać normalna): Teoretyczne i niezbyt powszechnie stosowane. Zajmuje się danymi tymczasowymi (obsługa zmian w czasie) poprzez dalszą dekompozycję tabel w celu wyeliminowania wszelkiej nadmiarowości nieczasowej.

Teoria normalizacji danych w MySQL serwer jest nadal rozwijany. Na przykład dyskusje toczą się nawet na 6th Normalna forma. Jednak w większości praktycznych zastosowań normalizacja osiąga najlepsze wyniki w 3rd Normalna forma. Ewolucję normalizacji w teoriach SQL zilustrowano poniżej:

Formy normalne bazy danych
Formy normalne bazy danych

Normalizacja bazy danych z przykładami

Baza danych Przykład normalizacji można łatwo zrozumieć na podstawie studium przypadku. Załóżmy, że biblioteka wideo utrzymuje bazę danych wypożyczonych filmów. Bez jakiejkolwiek normalizacji w bazie danych, wszystkie informacje są przechowywane w jednej tabeli, jak pokazano poniżej. Rozumiemy bazę danych normalizacji z przykładem normalizacji z rozwiązaniem:

Normalizacja bazy danych na przykładzie

Tutaj widzisz Kolumna Wypożyczone filmy ma wiele wartości. Przejdźmy teraz do pierwszej postaci normalnej:

Pierwsza postać normalna (1NF)

  • Każda komórka tabeli powinna zawierać jedną wartość.
  • Każdy rekord musi być unikalny.

Powyższa tabela w 1NF-

Przykład 1NF

Regulamin 1NF

Przykład 1NF w DBMS

Zanim przejdziemy dalej, zrozumiemy kilka rzeczy —

Co to jest KLUCZ w SQL

A KLUCZ w SQL to wartość używana do jednoznacznej identyfikacji rekordów w tabeli. KLUCZ SQL to pojedyncza kolumna lub kombinacja wielu kolumn używana do jednoznacznej identyfikacji wierszy lub krotek w tabeli. Klucz SQL służy do identyfikacji zduplikowanych informacji, a także pomaga w ustaleniu relacji między wieloma tabelami w bazie danych.

Uwaga: Kolumny w tabeli, które NIE są używane do jednoznacznej identyfikacji rekordu, nazywane są kolumnami niekluczowymi.

Co to jest klucz podstawowy?

Główny klucz

Klucz podstawowy w systemie DBMS

Wartość podstawowa to wartość pojedynczej kolumny używana do jednoznacznej identyfikacji rekordu bazy danych.

Posiada następujące atrybuty

  • A klucz podstawowy nie może być zero
  • Wartość klucza podstawowego musi być unikalna
  • Wartości klucza podstawowego należy rzadko zmieniać
  • Podczas wstawiania nowego rekordu kluczowi podstawowemu należy nadać wartość.

Co to jest klucz złożony?

Klucz złożony to klucz podstawowy składający się z wielu kolumn służących do jednoznacznej identyfikacji rekordu

W naszej bazie danych mamy dwie osoby o tym samym nazwisku Robert Phil, ale mieszkają w różnych miejscach.

Klucz złożony w bazie danych

Klucz złożony w bazie danych

W związku z tym do jednoznacznej identyfikacji rekordu wymagane jest zarówno imię i nazwisko, jak i adres. To jest klucz złożony.

Przejdźmy do drugiej postaci normalnej 2NF

Druga postać normalna (2NF)

  • Zasada 1 – Bądź w 1NF
  • Reguła 2 – Pojedynczy klucz podstawowy kolumny, który nie jest funkcjonalnie zależny od żadnego podzbioru relacji klucza kandydującego

Oczywiste jest, że nie możemy kontynuować tworzenia naszej prostej bazy danych w wersji 2nd Forma normalizacyjna, chyba że podzielimy powyższą tabelę.

Regulamin 2NF

Regulamin 2NF

Podzieliliśmy naszą tabelę 1NF na dwie tabele, tj. Tabelę 1 i Tabelę 2. Tabela 1 zawiera informacje o członkach. Tabela 2 zawiera informacje o wypożyczonych filmach.

Wprowadziliśmy nową kolumnę o nazwie Membership_id, która jest kluczem podstawowym tabeli 1. Rekordy można jednoznacznie zidentyfikować w tabeli 1 za pomocą identyfikatora członkostwa

Baza danych – klucz obcy

W tabeli 2 Membership_ID jest kluczem obcym

Baza danych – klucz obcy

Baza danych – klucz obcy

Klucz obcy w systemie DBMS

Klucz obcy odwołuje się do klucza podstawowego innej tabeli! Pomaga połączyć stoły

  • Klucz obcy może mieć inną nazwę niż klucz podstawowy
  • Zapewnia, że ​​wiersze w jednej tabeli odpowiadają wierszom w drugiej
  • W przeciwieństwie do klucza podstawowego, nie muszą one być unikalne. Najczęściej tak nie jest
  • Klucze obce mogą mieć wartość null, nawet jeśli klucze podstawowe nie

Baza danych – klucz obcy

Dlaczego potrzebujesz klucza obcego?

Załóżmy, że nowicjusz wstawia zapis w Tabeli B, np

Dlaczego potrzebujesz klucza obcego

Do klucza obcego będziesz mógł wstawiać tylko wartości, które istnieją w kluczu unikalnym w tabeli nadrzędnej. Pomaga to w integralności referencyjnej.

Powyższy problem można rozwiązać, deklarując identyfikator członkostwa z Tabeli 2 jako klucz obcy identyfikatora członkostwa z Tabeli 1

Teraz, jeśli ktoś spróbuje wstawić w polu identyfikatora członkostwa wartość, która nie istnieje w tabeli nadrzędnej, wyświetli się błąd!

Czym są przechodnie zależności funkcjonalne?

Przechodni zależność funkcjonalna ma miejsce podczas zmiany kolumny niebędącej kluczem, może spowodować zmianę dowolnej innej kolumny niebędącej kluczem

Rozważ tabelę 1. Zmiana niekluczowej kolumny Imię i nazwisko może zmienić Pozdrowienie.

Przechodnie zależności funkcyjne

Przejdźmy do 3NF

Trzecia postać normalna (3NF)

  • Zasada 1 – Bądź w 2NF
  • Zasada 2 – Nie ma przechodnich zależności funkcjonalnych

Aby przenieść nasz stół 2NF do 3NF, musimy ponownie podzielić nasz stół.

Przykład 3NF

Poniżej znajduje się przykład 3NF w bazie danych SQL:

Przykład 3NF

Przykład 3NF

Przykład 3NF

Ponownie podzieliliśmy nasze stoły i stworzyliśmy nowy stół, w którym przechowywane są Pozdrowienia.

Nie ma przechodnich zależności funkcjonalnych, dlatego nasza tabela jest w 3NF

W Tabeli 3 Identyfikator salutacji jest kluczem podstawowym, a w Tabeli 1 Identyfikator salutacji jest obcy kluczowi podstawowemu w Tabeli 3

Teraz nasz mały przykład jest na poziomie, którego nie można dalej rozłożyć, aby osiągnąć wyższe typy normalizacji w DBMS. W rzeczywistości jest już w wyższych formach normalizacji. Oddzielne wysiłki na rzecz przejścia do następnych poziomów normalizacji danych są zazwyczaj potrzebne w złożonych bazach danych. Jednak omówimy następne poziomy normalizacji w DBMS w skrócie w dalszej części.

Postać normalna Boyce-Codda (BCNF)

Nawet jeśli baza danych jest w wersji 3rd Forma normalna, ale jeśli ma więcej niż jedną, wystąpiłyby anomalie Kandydat Klucz.

Czasami BCNF jest również określane jako 3.5 Postać normalna.

Czwarta postać normalna (4NF)

Jeśli żadna instancja tabeli bazy danych nie zawiera dwóch lub więcej niezależnych i wielowartościowych danych opisujących daną jednostkę, to znajduje się ona w 4th Normalna forma.

Piąta postać normalna (5NF)

Stół jest w 5th Forma normalna tylko wtedy, gdy jest w formacie 4NF i nie można jej rozłożyć na dowolną liczbę mniejszych tabel bez utraty danych.

Zaproponowano szóstą postać normalną (6NF).

6th Forma normalna nie jest ustandaryzowana, jednak od pewnego czasu jest dyskutowana przez ekspertów ds. baz danych. Mamy nadzieję, że będziemy mieli jasną i ustandaryzowaną definicję 6th Normalna forma w najbliższej przyszłości…

Zalety postaci normalnej

  • Popraw spójność danych: Normalizacja zapewnia, że ​​każda część danych jest przechowywana tylko w jednym miejscu, co zmniejsza ryzyko niespójności danych. Kiedy dane są aktualizowane, wystarczy je zaktualizować w jednym miejscu, zapewniając spójność.
  • Zmniejsz nadmiarowość danych: Normalizacja pomaga wyeliminować zduplikowane dane, dzieląc je na wiele powiązanych tabel. Może to zaoszczędzić miejsce w pamięci, a także zwiększyć wydajność bazy danych.
  • Popraw wydajność zapytań: Znormalizowane bazy danych są często łatwiejsze do wykonywania zapytań. Ponieważ dane są zorganizowane logicznie, zapytania można optymalizować tak, aby działały szybciej.
  • Spraw, aby dane były bardziej znaczące: Normalizacja polega na grupowaniu danych w sposób sensowny i intuicyjny. Może to ułatwić zrozumienie i korzystanie z bazy danych, szczególnie dla osób, które nie projektowały bazy danych.
  • Zmniejsz ryzyko anomalii: Anomalie to problemy, które mogą wystąpić podczas dodawania, aktualizowania lub usuwania danych. Normalizacja może zmniejszyć ryzyko wystąpienia tych anomalii, zapewniając logiczną organizację danych.

Wady normalizacji

  • Zwiększona złożoność: Normalizacja może prowadzić do złożonych relacji. Rozległa liczba tabel z kluczami obcymi może być trudna w zarządzaniu, co prowadzi do zamieszania.
  • Zmniejszona elastyczność: Ze względu na rygorystyczne zasady normalizacji przechowywanie danych, które nie są zgodne z tymi regułami, może być mniej elastyczne.
  • Zwiększone wymagania dotyczące przechowywania: Chociaż normalizacja zmniejsza nadmiarowość, może być konieczne przydzielenie większej ilości miejsca w pamięci, aby pomieścić dodatkowe tabele i indeksy.
  • Narzut związany z wydajnością: Łączenie wielu tabel może być kosztowne pod względem wydajności. Im bardziej znormalizowane dane, tym więcej potrzeba złączeń, co może wydłużyć czas pobierania danych.
  • Kontekst utraty danych: Normalizacja dzieli dane na osobne tabele, co może prowadzić do utraty kontekstu biznesowego. Aby zrozumieć kontekst fragmentu danych, konieczne jest sprawdzenie powiązanych tabel.
  • Potrzeba wiedzy eksperckiej: Implementacja znormalizowanej bazy danych wymaga głębokiego zrozumienia danych, relacji między danymi i reguł normalizacji. Wymaga to specjalistycznej wiedzy i może być czasochłonne.

To wszystko, jeśli chodzi o normalizację SQL!!!

Podsumowanie

  • Projektowanie baz danych ma kluczowe znaczenie dla pomyślnego wdrożenia systemu zarządzania bazami danych, który spełnia wymagania dotyczące danych systemu przedsiębiorstwa.
  • Normalizacja w systemie DBMS to proces, który pomaga tworzyć systemy baz danych, które są opłacalne i mają lepsze modele bezpieczeństwa.
  • Zależności funkcjonalne są bardzo ważnym elementem procesu normalizacji danych
  • Większość systemów baz danych to znormalizowane bazy danych aż do trzeciej postaci normalnej w systemie DBMS.
  • Klucz podstawowy jednoznacznie identyfikuje rekord w tabeli i nie może mieć wartości null
  • Klucz obcy pomaga połączyć tabelę i odwołuje się do klucza podstawowego

Czytaj więcej Czytaj więcej