NF
Postaci normalne baz danych (1NF, 2NF, 3NF)
Normalizacja, przykłady, zadania, quiz, checklisty · INF.03
Moduł Co i dlaczego normalizujemy?
Ta lekcja nauczy Cię rozpoznawać, tworzyć i przekształcać tabele relacyjne zgodnie z 1NF, 2NF, 3NF, wykrywać i eliminować typowe anomalie, a także normować własne przykłady z życia. Wszystko z praktyką, quizem i checklistą.
- Zrozumiesz podstawowe postaci normalne i ich znaczenie
- Nauczysz się normalizować tabele krok po kroku
- Umiesz rozpoznać i wyeliminować redundancję, anomalie wstawiania/aktualizacji/usuwania
- Ćwiczysz na praktycznych case’ach i quizie
Teoria Czym jest normalizacja?
- Normalizacja to proces przekształcania schematu relacyjnej bazy tak, aby uniknąć anomalii, nadmiarowości i zapewnić spójność danych.
- Normalizujemy dane etapami: 1NF – atomowość wartości, 2NF – pełna zależność od klucza, 3NF – brak zależności przechodnich.
- Efektem są tabele bardziej odporne na błędy, prostsze w utrzymaniu, wydajniejsze w operacjach CRUD.
- Zanormalizowane tabele ułatwiają analitykę, raportowanie, migracje systemowe, refaktoring.
1NF Pierwsza postać normalna
- Każde pole zawiera wyłącznie jedną (atomową) wartość dla każdego rekordu.
- Nie mogą istnieć listy, powtórzenia, ani tzw. pola złożone w jednym rekordzie.
Ćwiczenie 1 — Wykryj brak 1NF i popraw tabelę:
| id_ucznia | imie | telefony | |-----------|--------|------------------| | 1 | Adam | 123-456, 321-222 |
Rozwiązanie (rozdzielenie do 1NF): Tabela Uczniowie: | id_ucznia | imie | |-----------|------| | 1 | Adam | Tabela Telefony: | id_ucznia | telefon | |-----------|----------| | 1 | 123-456 | | 1 | 321-222 |
2NF Druga postać normalna
- Tabela jest już w 1NF.
- Każda kolumna niekluczowa w pełni zależy od całego klucza głównego, a nie tylko od jego części (dotyczy tylko złożonych kluczy).
Ćwiczenie 2 — Zidentyfikuj brak 2NF i rozwiąż:
| uczen_id | przedmiot | nauczyciel | |----------|-----------|-------------| | 1 | Matematyka| Kowalski | | 1 | Historia | Nowak |
Nauczyciel zależy tylko od przedmiotu! Popraw do 2NF: Tabela Uczniowie_Przedmioty: | uczen_id | przedmiot | Tabela Przedmioty_Nauczyciele: | przedmiot | nauczyciel |
3NF Trzecia postać normalna
- Jest już w 2NF.
- Brak zależności przechodnich — kolumna niekluczowa nie zależy od innej niekluczowej.
- Każdy atrybut zależy wyłącznie od pełnego klucza.
Ćwiczenie 3 — Znajdź zależność przechodnią:
| id_ucznia | klasa | wychowawca | |-----------|-------|------------| | 1 | 3B | Baran |
Zależność: wychowawca zależy od klasy! Po normalizacji: Tabela Uczniowie: | id_ucznia | klasa | Tabela Klasy: | klasa | wychowawca |
Anomalie Przykłady anomalie i jak im zapobiegać
- Anomalia aktualizacyjna: Ta sama informacja występuje w wielu miejscach – zmiana w jednym miejscu wymaga powielenia zmian.
- Anomalia wstawiania: Nie można dodać części danych bez niepotrzebnego wypełniania innych pól (np. nie da się dodać przedmiotu bez ucznia).
- Anomalia usuwania: Usuwając jeden rekord tracisz inny kluczowy (usuwając kontakt, tracisz dane o wychowawcy itp.).
Ćwiczenie 4 — Podaj własny przykład anomalii (dowolnej) i jej rozwiązanie przez normalizację
Anomalia wstawiania: Nie mogę dodać nowej klasy bez uczniów. Po normalizacji: osobna tabela Klasy pozwala dodać klasę bez przypisania ucznia.
Ćwiczenia praktyczne Sprawdź się
Ćwiczenie 5 — Normalizacja do 3NF
| id_zamowienia | klient | adres | produkt | cena | |---------------|--------|-------------|---------|------| | 111 | Bratek | W-wa, Polna | Pióro | 12 | | 112 | Bratek | W-wa, Polna | Tornister| 90 |
Klienci | klient | adres | Zamowienia | id_zamowienia | klient | Produkty | id_zamowienia | produkt | cena | (Wariant: Produkty jako katalog, powiązanie przez id_produktu)
Ćwiczenie 6 — Znajdź zależność częściową i przechodnią
| id_faktury | klient | miasto | produkt | cena |
Miasto zależy od klienta, Cena zależy od produktu. Tabele po normalizacji: Faktury (id_faktury, klient, produkt) Klienci (klient, miasto) Produkty (produkt, cena)
Quiz Test wiedzy — postaci normalne
Każde pole ma wartość atomową
Można pisać listy w polu
Można pisać listy w polu
Gdy atrybut zależy tylko od części klucza
Gdy wszystko zależy od pełnego klucza
Gdy wszystko zależy od pełnego klucza
Gdy atrybut niekluczowy zależy od innego niekluczowego
Tabela nie ma PK
Tabela nie ma PK
Normalizacja
Powielanie pól
Powielanie pól
Checklista Po module umiesz:
Materiały: INF.03 — Postaci normalne · Opracowanie: Tomasz Puchała © 2025