Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - SQL

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:

  1. 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.
  2. 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:

  1. 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:

  1. 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ę
Aby widzieć ocenę lekcji - Zaloguj się