Relacyjna baza danych przechowuje dane w postaci tabel (relacji), gdzie każdy wiersz to rekord, a każda kolumna to atrybut. Tabele można ze sobą łączyć dzięki kluczom — to pozwala uniknąć powielania danych i utrzymać ich spójność.
| Pojęcie | Definicja | Przykład |
|---|---|---|
| Klucz główny (PK) | Unikalny identyfikator każdego wiersza w tabeli | id_ucznia w tabeli Uczniowie |
| Klucz obcy (FK) | Kolumna wskazująca na klucz główny innej tabeli — buduje relację | id_klasy w tabeli Uczniowie, wskazujący na tabelę Klasy |
Normalizacja to proces eliminowania redundancji (powielania) danych i anomalii przy ich modyfikacji, poprzez organizowanie danych w tabele według określonych reguł zwanych postaciami normalnymi.
Jedna tabela: Zamowienie(id, klient, adres_klienta, produkt1, produkt2, produkt3). Problemy: adres klienta powtarza się w każdym zamówieniu (redundancja), a sztywna liczba kolumn na produkty ogranicza zamówienie do 3 pozycji.
Każda komórka zawiera dokładnie jedną, atomową wartość (żadnych list w jednej komórce, żadnych powtarzających się grup kolumn jak produkt1, produkt2, produkt3).
Spełnia 1NF, a dodatkowo każdy atrybut niekluczowy zależy od całego klucza głównego (dotyczy tabel z kluczem złożonym z kilku kolumn).
Spełnia 2NF, a dodatkowo żaden atrybut niekluczowy nie zależy od innego atrybutu niekluczowego (eliminujemy zależności przechodnie). Np. jeśli tabela Uczniowie zawiera nazwa_klasy zależną od id_klasy, a nie bezpośrednio od klucza głównego ucznia — wydzielamy osobną tabelę Klasy.
Zaprojektuj (na kartce lub w SQL) schemat relacyjnej bazy danych dla wypożyczalni książek: książki, czytelnicy, wypożyczenia. Każda książka może być wypożyczona wielokrotnie przez różnych czytelników — zaprojektuj tabele tak, by uniknąć redundancji (3NF).
Dana jest tabela Zamowienia(id_zamowienia, id_klienta, imie_klienta, produkt, cena_produktu). Wskaż, która postać normalna jest złamana i zaproponuj poprawę.
1. Do czego służy klucz obcy (FK) w relacyjnej bazie danych?
2. Która postać normalna wymaga, aby każda komórka zawierała pojedynczą, atomową wartość?
3. Czego dotyczy 3NF?