Normalizacja to sposób uporządkowania bazy danych, żeby:
- nie powtarzać tych samych informacji (redundancja),
- dane były spójne i łatwe do aktualizacji,
- baza była czytelna i logiczna.
Można powiedzieć, że normalizacja to „sprzątanie” bazy danych – rozdzielamy dane na mniejsze, dobrze zorganizowane tabele i łączymy je relacjami.
Dlaczego to ważne?
Wyobraź sobie tabelę uczniów:
| ID_ucznia | Imię | Nazwisko | Klasa | Wychowawca | Sala |
|---|---|---|---|---|---|
| 1 | Jan | Kowalski | 2A | Nowak | 12 |
| 2 | Ola | Wiśniewska | 2A | Nowak | 12 |
| 3 | Piotr | Malinowski | 2B | Kowalczyk | 14 |
Problem:
- Informacja o wychowawcy i sali powtarza się przy każdym uczniu.
- Jeśli klasa 2A zmieni salę z 12 na 16, to trzeba poprawić wiele rekordów – łatwo o błąd.
Po normalizacji rozbijamy to na osobne tabele:
UCZNIOWIE
| ID_ucznia | Imię | Nazwisko | ID_klasy |
|---|---|---|---|
| 1 | Jan | Kowalski | 1 |
| 2 | Ola | Wiśniewska | 1 |
| 3 | Piotr | Malinowski | 2 |
KLASY
| ID_klasy | Nazwa | Wychowawca | Sala |
|---|---|---|---|
| 1 | 2A | Nowak | 16 |
| 2 | 2B | Kowalczyk | 14 |
Teraz zmiana sali dla klasy 2A to tylko jedna poprawka w tabeli KLASY.
Zasady normalizacji
Normalizacja składa się z tzw. form normalnych (NF) – to kolejne etapy porządkowania bazy.
1. Pierwsza forma normalna (1NF)
- W tabeli nie ma powtarzających się grup danych.
- Każda kolumna przechowuje tylko jedną wartość.
Źle:
| ID | Imię | Przedmioty |
|---|---|---|
| 1 | Jan | matematyka, fizyka, informatyka |
Dobrze (po 1NF):
| ID | Imię | Przedmiot |
|---|---|---|
| 1 | Jan | matematyka |
| 1 | Jan | fizyka |
| 1 | Jan | informatyka |
2. Druga forma normalna (2NF)
- Obowiązuje, gdy tabela ma klucz złożony (kilka kolumn jako klucz główny).
- Każda kolumna musi zależeć od całego klucza, a nie tylko od części.
Źle:
Tabela OCENY (klucz = [ID_ucznia, ID_przedmiotu])
| ID_ucznia | ID_przedmiotu | Ocena | Imię ucznia |
|---|---|---|---|
| 1 | 5 | 4 | Jan |
„Imię ucznia” nie zależy od całego klucza (ID_ucznia + ID_przedmiotu), tylko od ID_ucznia.
Dobrze:
Osobna tabela UCZNIOWIE z imionami, a tabela OCENY przechowuje tylko ID i ocenę.
3. Trzecia forma normalna (3NF)
- W tabeli nie mogą być dane zależne od innych kolumn (tzw. zależności przechodnie).
Źle:
| ID_ucznia | Klasa | Wychowawca |
|---|---|---|
| 1 | 2A | Nowak |
„Wychowawca” nie zależy od ucznia, tylko od klasy.
Dobrze:
- tabela UCZNIOWIE (ID_ucznia, Imię, Nazwisko, ID_klasy),
- tabela KLASY (ID_klasy, Nazwa, Wychowawca).
Podsumowanie
Normalizacja to proces dzielenia danych na logiczne tabele i łączenia ich relacjami, żeby:
- uniknąć powtarzania danych,
- łatwiej aktualizować informacje,
- utrzymać spójność w bazie.
Formy normalizacji (najważniejsze do INF.03):
- 1NF – brak powtarzających się grup danych.
- 2NF – brak zależności od części klucza złożonego.
- 3NF – brak zależności przechodnich między kolumnami.
Film1
Film2 (youtube – kanał nieinformatyk)
Zadanie – Normalizacja bazy danych
W pewnej szkole prowadzona jest taka tabela:
| ID_ucznia | Imię | Nazwisko | Klasa | Sala | Wychowawca |
|---|---|---|---|---|---|
| 1 | Jan | Kowalski | 2A | 12 | Nowak |
| 2 | Ola | Wiśniewska | 2A | 12 | Nowak |
| 3 | Piotr | Malinowski | 2B | 14 | Kowalczyk |
| 4 | Anna | Zielińska | 2B | 14 | Kowalczyk |
Polecenia dla ucznia:
- Wskaż, jakie problemy występują w tej tabeli (redundancja, spójność danych).
- Podziel dane na dwie tabele zgodnie z zasadami normalizacji (3NF):
- tabela UCZNIOWIE,
- tabela KLASY.
- Zapisz przykładowe rekordy do obu tabel po normalizacji.
- Napisz zapytanie SQL, które wyświetli listę uczniów wraz z ich wychowawcą.
***

