Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - SQL

Klucze główne i obce (PRIMARY KEY, FOREIGN KEY) oraz relacje między tabelami

Klucze główne i obce to podstawowe pojęcia w relacyjnych bazach danych. Pomagają one uporządkować informacje oraz łączyć różne tabele, tworząc relacje między danymi i dbając o ich spójność. W tej sekcji omówimy, czym są klucze główne i obce oraz jak działają relacje między tabelami.

Klucz Główny (PRIMARY KEY)

Klucz główny to kolumna (lub zestaw kolumn) w tabeli, która jednoznacznie identyfikuje każdy wiersz. Każda tabela powinna mieć klucz główny, aby zapewnić unikalność danych i ułatwić ich odnajdywanie.

  • Unikalność: Każda wartość w kolumnie będącej kluczem głównym musi być unikalna. Nie mogą występować dwa wiersze z tą samą wartością klucza głównego.
  • Brak wartości NULL: Klucz główny nie może mieć wartości NULL. Każdy wiersz musi mieć wartość w tej kolumnie.

Przykład użycia:

W tym przykładzie kolumna id jest kluczem głównym tabeli uczniowie. Dzięki temu każdemu uczniowi przypisany jest unikalny identyfikator, który pozwala na jego jednoznaczną identyfikację.

CREATE TABLE ucznen (
    id INT PRIMARY KEY AUTO_INCREMENT,
    imie VARCHAR(50) NOT NULL,
    nazwisko VARCHAR(50) NOT NULL
);

Klucz Obcy (FOREIGN KEY)

Klucz obcy to kolumna (lub zestaw kolumn) w jednej tabeli, która odnosi się do klucza głównego w innej tabeli. Klucze obce służą do tworzenia powiązań między tabelami, co pozwala połączyć dane z różnych tabel i zapewnić ich spójność.

  • Zależność: Klucz obcy odnosi się do klucza głównego w innej tabeli, co umożliwia połączenie danych z dwóch różnych tabel.
  • Spójność danych: Klucze obce pomagają utrzymać spójność danych, ponieważ nie można dodać wartości do kolumny będącej kluczem obcym, jeśli taka wartość nie istnieje w tabeli, do której się odnosi.

Przykład użycia:

W tym przykładzie tabela oceny zawiera kolumny uczen_id i przedmiot_id, które są kluczami obcymi odnoszącymi się do kolumn id w tabelach uczniowie i przedmioty. Dzięki temu każdej ocenie można przypisać ucznia oraz przedmiot, którego dotyczy.

CREATE TABLE ocena (
    id INT PRIMARY KEY AUTO_INCREMENT,
    ocena DECIMAL(3, 2),
    uczen_id INT,
    przedmiot_id INT,
    FOREIGN KEY (uczen_id) REFERENCES uczen(id),
    FOREIGN KEY (przedmiot_id) REFERENCES przedmiot(id)
);

Relacje Między Tabelami

Relacje między tabelami pozwalają na organizowanie danych w bazach danych. Istnieją trzy główne typy relacji:

Relacja Jeden do Jednego (1:1)

W relacji jeden do jednego każdemu rekordowi w jednej tabeli odpowiada dokładnie jeden rekord w innej tabeli. Takie relacje są mniej popularne, ale mogą być użyteczne, gdy chcemy podzielić dane na dwie tabele, na przykład z powodu bezpieczeństwa lub organizacji danych.

Przykład: Tabela dane_osobowe może mieć relację jeden do jednego z tabelą adresy, gdzie każdy uczeń ma tylko jeden adres.

CREATE TABLE dane_osobowe (
    id INT PRIMARY KEY,
    pesel CHAR(11) NOT NULL
);

CREATE TABLE adresy (
    id INT PRIMARY KEY,
    ulica VARCHAR(100),
    miasto VARCHAR(100),
    dane_osobowe_id INT UNIQUE,
    FOREIGN KEY (dane_osobowe_id) REFERENCES dane_osobowe(id)
);

Relacja Jeden do Wielu (1:N)

Relacja jeden do wielu jest jedną z najczęściej spotykanych relacji. Każdemu rekordowi w jednej tabeli odpowiada wiele rekordów w innej tabeli. Na przykład jeden nauczyciel może prowadzić wiele przedmiotów.

Przykład:

W tym przykładzie jeden nauczyciel (nauczyciele) może prowadzić wiele przedmiotów (przedmioty). Kolumna nauczyciel_id w tabeli przedmioty odnosi się do id w tabeli nauczyciele.

CREATE TABLE nauczyciele (
    id INT PRIMARY KEY,
    imie VARCHAR(50),
    nazwisko VARCHAR(50)
);

CREATE TABLE przedmioty (
    id INT PRIMARY KEY,
    nazwa VARCHAR(100),
    nauczyciel_id INT,
    FOREIGN KEY (nauczyciel_id) REFERENCES nauczyciele(id)
);

Relacja Wiele do Wielu (N:N)

Relacja wiele do wielu występuje, gdy wiele rekordów w jednej tabeli może być powiązanych z wieloma rekordami w innej tabeli. Aby odwzorować taką relację, zazwyczaj używa się tabeli pośredniczącej.

Przykład:

W tym przykładzie tabela uczniowie_przedmioty jest tabelą pośredniczącą, która łączy tabele uczniowie i przedmioty. Dzięki temu jeden uczeń może być zapisany na wiele przedmiotów, a jeden przedmiot może być uczony przez wielu uczniów.

CREATE TABLE uczniowie_przedmioty (
    uczen_id INT,
    przedmiot_id INT,
    PRIMARY KEY (uczen_id, przedmiot_id),
    FOREIGN KEY (uczen_id) REFERENCES uczniowie(id),
    FOREIGN KEY (przedmiot_id) REFERENCES przedmioty(id)
);

Testy przypięte do lekcji
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się
Aby widzieć ocenę lekcji - Zaloguj się