Kursy i Poradniki IT - Adrian Kowalski
Kurs SQL dla Początkujących
O lekcji

Rodzaje relacji: jeden do jednego, jeden do wielu, wiele do wielu

Relacje między tabelami w bazach danych definiują sposób, w jaki dane w jednej tabeli są powiązane z danymi w innej tabeli. W relacyjnych bazach danych istnieją trzy główne typy relacji:

  1. Jeden do jednego (1:1): Każdy rekord w jednej tabeli odpowiada dokładnie jednemu rekordowi w drugiej tabeli.

    • Przykład: Tabela Użytkownicy zawiera dane użytkowników, a tabela Profile przechowuje szczegóły ich profilów. Każdy użytkownik ma dokładnie jeden profil.

      Użytkownicy   Profile
      ID Imię  
      1 Jan  
       
  2. Jeden do wielu (1:N): Jeden rekord w tabeli jest związany z wieloma rekordami w drugiej tabeli.

    • Przykład: Tabela Klienci i tabela Zamówienia. Jeden klient może złożyć wiele zamówień.

      Klienci   Zamówienia
      ID Imię  
      1 Anna  
      2 Jan  
       
  3. Wiele do wielu (N:M): Wiele rekordów w jednej tabeli może być powiązanych z wieloma rekordami w drugiej tabeli. Taka relacja wymaga tabeli pośredniej.

    • Przykład: Tabela Studenci i tabela Kursy. Student może zapisać się na wiele kursów, a kurs może być wybierany przez wielu studentów.

      Tabela Studenci:

      ID Imię
      1 Anna
      2 Jan
       

      Tabela pośrednicząca Student_Kurs:

      Student_ID Kurs_ID
      1 1
      2 1
      1 2

Tworzenie relacji w bazie danych

Relacje tworzone są za pomocą kluczy obcych (FOREIGN KEY), które wskazują na powiązania między tabelami.

Przykład:

  1. Tworzona jest tabela Klienci z kluczem głównym:
    CREATE TABLE Klienci (
        ID INT PRIMARY KEY,
        Imię VARCHAR(50)
    );
    
  2. Tworzona jest tabela Zamówienia z kluczem obcym związanym z Klienci:
    CREATE TABLE Zamowienia (
        ID INT PRIMARY KEY,
        Klient_ID INT,
        Data DATE,
        FOREIGN KEY (Klient_ID) REFERENCES Klienci(ID)
    );
    

Relacje pomagają zachować integralność danych i łatwiej łączyć powiązane dane w zapytaniach SQL.