Lekcja 13: Klucze i relacje - Primary Key i Foreign Key (Koncepcja)

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Lekcja 13: Klucze i relacje - Primary Key i Foreign Key (Koncepcja)
Required In Progress

Co sprawia, że baza danych jest "relacyjna"?

Jak wspomniano w Lekcji 1, słowo relacyjna oznacza, że dane są przechowywane w oddzielnych, powiązanych ze sobą tabelach, aby uniknąć redundancji. Jest to proces tzw. normalizacji. Zamiast trzymać pełne dane klasy (np. "Klasa 3A, Wychowawca: Jan Nowak, Sala: 201") w każdym wierszu ucznia (co byłoby marnotrawstwem miejsca i koszmarem przy aktualizacji), tworzymy oddzielne tabele (np. Uczniowie i Klasy) i łączymy je za pomocą kluczy — te powiązania są sercem modelu RDBMS.

Klucz główny (Primary Key - PK): Unikalny identyfikator wiersza

Klucz główny (PK) to kolumna lub zestaw kolumn, która jednoznacznie identyfikuje każdy wiersz w tabeli — jest to "adres" rekordu. PK musi spełniać dwie fundamentalne zasady:

  • UNIQUE (Unikalny): Wartość w kolumnie PK nie może się powtórzyć w całej tabeli. Nie może być dwóch uczniów o tym samym ID_Ucznia.
  • NOT NULL (Nie‑nullowy): Wartość PK musi istnieć. Nie może być ucznia bez ID_Ucznia.

W tabeli Uczniowie idealnym PK jest ID_Ucznia (zazwyczaj typu INT). Kolumna Nazwisko jest złym kandydatem na PK, ponieważ może istnieć dwóch "Kowalskich".

Klucz obcy (Foreign Key - FK): Łącznik do klucza głównego w innej tabeli

Klucz obcy (FK) to "klej" modelu relacyjnego — kolumna w jednej tabeli, która odwołuje się do PRIMARY KEY w innej tabeli (czasem nawet w tej samej). Dzięki FK baza danych może wymuszać integralność referencyjną.

Przykład:

  • Tabela Klasy ma kolumnę ID_Klasy (to jej PRIMARY KEY).
  • Tabela Uczniowie ma kolumnę ID_Klasy (to FOREIGN KEY), która przechowuje wartość ID_Klasy z tabeli Klasy.

Integralność referencyjna oznacza, że RDBMS będzie strzegł tej relacji: np. odrzuci próbę wstawienia do tabeli Uczniowie wiersza z ID_Klasy = 99, jeśli w tabeli Klasy nie istnieje ID_Klasy = 99, lub (w zależności od ustawień) zablokuje usunięcie klasy, do której przypisani są uczniowie.

Wizualizacja relacji między tabelami

Relacje są często przedstawiane na diagramach ERD (Entity-Relationship Diagram): tabele jako prostokąty, a linie między nimi pokazujące powiązania PK–FK. Relacja między Klasy a Uczniowie jest przykładem relacji "jeden‑do‑wielu" — jedna klasa może mieć wielu uczniów.