Poziomy normalizacji (1NF, 2NF, 3NF)
Normalizacja danych to proces dzielenia dużych tabel na mniejsze, powiązane ze sobą tabele, aby zredukować powtarzanie tych samych informacji i ułatwić zarządzanie danymi w bazie. Normalizacja jest ważna, bo pomaga usunąć duplikaty i zapewnia spójność danych. Proces ten obejmuje kilka poziomów, które nazywamy formami normalnymi. Trzy najczęściej stosowane poziomy to: pierwsza forma normalna (1NF), druga forma normalna (2NF), i trzecia forma normalna (3NF).
Pierwsza forma normalna (1NF)
Pierwsza forma normalna (1NF) to podstawowy poziom normalizacji. Wprowadza kilka zasad, które pomagają lepiej zorganizować dane w tabelach:
- Każda kolumna musi zawierać tylko pojedyncze, niepodzielne wartości - To znaczy, że w każdej komórce tabeli może znajdować się tylko jedna wartość. Nie możemy przechowywać wielu informacji w jednej komórce, takich jak lista numerów telefonów.
- Każda kolumna musi mieć jeden określony typ danych - Wszystkie wartości w danej kolumnie muszą być tego samego typu, np. wszystkie muszą być liczbami lub datami.
Przykład: Wyobraźmy sobie tabelę Studenci
, która wygląda tak:
id_studenta | imie | nazwisko | numery_telefonu |
---|---|---|---|
1 | Jan | Kowalski | 123-456-789, 987-654-321 |
2 | Anna | Nowak | 456-789-123 |
Tutaj kolumna numery_telefonu
zawiera listę numerów telefonów, co łamie zasadę 1NF. Aby to naprawić, powinniśmy przenieść numery telefonów do nowej tabeli, tak aby każda wartość była osobnym wierszem.
Po normalizacji (spełniająca 1NF):
Tabela Studenci
:
id_studenta | imie | nazwisko |
1 | Jan | Kowalski |
2 | Anna | Nowak |
Tabela Numery_telefonu
:
id_telefonu | id_studenta | numer_telefonu |
1 | 1 | 123-456-789 |
2 | 1 | 987-654-321 |
3 | 2 | 456-789-123 |
Druga forma normalna (2NF)
Druga forma normalna (2NF) idzie krok dalej niż 1NF. Aby tabela spełniała wymagania 2NF, musi spełniać zasady 1NF oraz:
- Każda kolumna, która nie jest częścią klucza głównego, musi zależeć od całego klucza głównego - Jeśli klucz główny składa się z kilku kolumn, każda kolumna, która nie jest kluczem, musi zależeć od wszystkich tych kolumn, a nie tylko od jednej z nich.
Przykład: Wyobraźmy sobie tabelę Zamowienia_Produkty
, która wygląda tak:
id_zamowienia | id_produktu | nazwa_produktu | ilosc |
1 | 101 | Laptop | 2 |
1 | 102 | Myszka | 5 |
2 | 103 | Klawiatura | 3 |
W tej tabeli nazwa_produktu
zależy tylko od id_produktu
, a nie od całego klucza głównego (id_zamowienia
i id_produktu
). Aby spełnić wymagania 2NF, musimy przenieść nazwa_produktu
do oddzielnej tabeli Produkty
.
Po normalizacji (spełniająca 2NF):
Tabela Zamowienia_Produkty
:
id_zamowienia | id_produktu | ilosc |
1 | 101 | 2 |
1 | 102 | 5 |
2 | 103 | 3 |
Tabela Produkty
:
id_produktu | nazwa_produktu |
101 | Laptop |
102 | Myszka |
103 | Klawiatura |
Trzecia forma normalna (3NF)
Trzecia forma normalna (3NF) wprowadza jeszcze jeden poziom organizacji, aby wyeliminować zależności przechodnie. Aby tabela spełniała wymagania 3NF, musi spełniać zasady 2NF oraz:
- Kolumny niekluczowe nie mogą zależeć od innych kolumn niekluczowych - To znaczy, że każda kolumna, która nie jest kluczem głównym, powinna zależeć tylko od klucza głównego, a nie od innych kolumn w tabeli.
Przykład: Wyobraźmy sobie tabelę Pracownicy
, która wygląda tak:
id_pracownika | nazwa_dzialu | adres_dzialu |
1 | IT | Ul. Informatyczna 1 |
2 | HR | Ul. Kadrowa 3 |
Tutaj adres_dzialu
zależy od nazwa_dzialu
, co jest zależnością przechodnią. Aby spełnić wymagania 3NF, powinniśmy utworzyć osobną tabelę Dzialy
.
Po normalizacji (spełniająca 3NF):
Tabela Pracownicy
:
id_pracownika | nazwa_dzialu |
1 | IT |
2 | HR |
Tabela Dzialy
:
nazwa_dzialu | adres_dzialu |
IT | Ul. Informatyczna 1 |
HR | Ul. Kadrowa 3 |
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |