Temat: 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ę |