🎯 Cele lekcji

📊

1. Cechy relacyjnej bazy danych

Model relacyjny wprowadził Edgar F. Codd w 1970 roku. Opiera się na teorii zbiorów i algebrze relacyjnej.

CechaOpis
Dane w tabelachWszystkie dane przechowywane w tabelach (relacjach) złożonych z wierszy i kolumn
Unikalność wierszyKażdy wiersz jest unikalny — identyfikowany przez klucz główny
Atomowość wartościKażda komórka zawiera tylko jedną, niepodzielną wartość
Niezależność kolejnościKolejność wierszy i kolumn nie ma znaczenia semantycznego
Integralność encjiKlucz główny nie może mieć wartości NULL
Integralność referencyjnaKlucz obcy musi wskazywać na istniejący klucz główny lub być NULL
Niezależność danychStruktura logiczna jest niezależna od fizycznego przechowywania
Integralność referencyjna — zasada mówiąca, że wartość klucza obcego musi odpowiadać istniejącej wartości klucza głównego w powiązanej tabeli. SZBD egzekwuje tę zasadę automatycznie.
🔗

2. Typy relacji

Relacja 1:1 (jeden do jednego)

Każdy rekord w tabeli A odpowiada dokładnie jednemu rekordowi w tabeli B.

osoba
  • 🔑 id_osoby
  • imie, nazwisko
1 ── 1
paszport
  • 🔑 id_paszportu
  • 🔗 id_osoby (FK, UNIQUE)
  • numer, data_waznosci

Relacja 1:N (jeden do wielu)

Jeden rekord w tabeli A może mieć wiele powiązanych rekordów w tabeli B. Najczęstszy typ!

kategoria
  • 🔑 id_kategorii
  • nazwa
1 ──── N
produkt
  • 🔑 id_produktu
  • 🔗 id_kategorii (FK)
  • nazwa, cena

Relacja M:N (wiele do wielu)

Wiele rekordów z tabeli A może być powiązanych z wieloma rekordami tabeli B. Wymaga tabeli pośredniej!

student
  • 🔑 id_studenta
  • imie, nazwisko
M
student_kurs
  • 🔗 id_studenta (FK)
  • 🔗 id_kursu (FK)
  • data_zapisu
N
kurs
  • 🔑 id_kursu
  • nazwa, ects
W tabeli pośredniej klucz główny to zazwyczaj kombinacja dwóch kluczy obcych (złożony klucz główny).
🏗️

3. Integralność referencyjna — akcje ON DELETE / ON UPDATE

Gdy rekord rodzica jest usuwany lub zmieniany, SZBD może podjąć różne akcje wobec powiązanych rekordów:

AkcjaOpis
CASCADEAutomatycznie usuwa/aktualizuje powiązane rekordy
SET NULLUstawia klucz obcy na NULL
RESTRICTBlokuje operację gdy istnieją powiązane rekordy (domyślnie)
SET DEFAULTUstawia wartość domyślną
NO ACTIONJak RESTRICT (sprawdza po wykonaniu transakcji)
CREATE TABLE zamowienia (
  id_zamowienia INT AUTO_INCREMENT PRIMARY KEY,
  id_klienta    INT NOT NULL,
  data          DATE,
  FOREIGN KEY (id_klienta) REFERENCES klienci(id_klienta)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);
✏️

Zadania interaktywne

Zadanie 1Typ relacji

Określ typ relacji (1:1 / 1:N / M:N):

Autor pisze Książki
Obywatel posiada PESEL
Student uczęszcza na Kursy
Dział zatrudnia Pracowników
Zadanie 2ON DELETE

Masz tabelę zamowienia z kluczem obcym do tabeli klienci. Chcesz, aby po usunięciu klienta wszystkie jego zamówienia zostały automatycznie usunięte. Którą akcję zastosujesz?

  • ON DELETE RESTRICT
  • ON DELETE SET NULL
  • ON DELETE CASCADE
  • ON DELETE NO ACTION
Zadanie 3Tabela pośrednia M:N

Zdefiniuj relację M:N między tabelami produkty i zamowienia. Tabela pośrednia powinna nazywać się pozycje_zamowien i zawierać ilość oraz cenę jednostkową. Wpisz nazwy kolumn:

pozycje_zamowien (
  , -- klucz obcy do zamowienia
  , -- klucz obcy do produktu
  ,
  
)

📌 Zapamiętaj