Tworzenie relacji między tabelami

Tworzenie relacji między tabelami jest kluczowym aspektem przy projektowaniu baz danych. Relacje te pomagają w organizacji i łączeniu danych w sposób, który zapewnia ich spójność i efektywność. W MySQL relacje między tabelami są tworzone za pomocą kluczy obcych (foreign keys) oraz określania odpowiednich związków, takich jak jeden do jednego (1:1), jeden do wielu (1:N) oraz wiele do wielu (M:N).

Relacje są niezbędne, gdy dane w jednej tabeli są powiązane z danymi w innej tabeli. Dzięki odpowiedniemu połączeniu, możliwe jest pobranie danych z wielu tabel w jednym zapytaniu, co zwiększa efektywność pracy z bazą danych.

📌 Klucze obce (Foreign Keys)

✅ Definicja klucza obcego:

Klucz obcy to kolumna w tabeli, która wskazuje na klucz główny (primary key) w innej tabeli. Dzięki temu możliwe jest ustanowienie relacji między tymi tabelami.

Przykład
-- Składnia definicji klucza obcego
CREATE TABLE tabela1 (
  id INT PRIMARY KEY,
  nazwa VARCHAR(100)
);

CREATE TABLE tabela2 (
  id INT PRIMARY KEY,
  id_tabela1 INT,
  FOREIGN KEY (id_tabela1) REFERENCES tabela1(id)
);

📌 Relacja jeden do wielu (1:N)

✅ Przykład: Relacja między tabelą klienci a tabelą zamowienia, gdzie każdy klient może mieć wiele zamówień, ale każde zamówienie jest przypisane do jednego klienta.

📌 Opis:

  • Klient może mieć wiele zamówień, ale każde zamówienie jest przypisane tylko do jednego klienta.
  • Dzięki kluczowi obcemu w tabeli zamowienia (id_klienta), tworzymy relację między klientami a ich zamówieniami.
Przykład
CREATE TABLE klienci (
  id INT PRIMARY KEY,
  imie VARCHAR(50)
);

CREATE TABLE zamowienia (
  id INT PRIMARY KEY,
  id_klienta INT,
  data DATE,
  FOREIGN KEY (id_klienta) REFERENCES klienci(id)
);

📌 Relacja wiele do wielu (M:N)

✅ Przykład: Relacja między tabelą produkty a tabelą zamowienia, gdzie jedno zamówienie może zawierać wiele produktów, a jeden produkt może występować w wielu zamówieniach. Tego typu relację tworzymy za pomocą tabeli pośredniczącej (np. zamowienia_produkty).

📌 Opis:

  • Tabela pośrednicząca zamowienia_produkty łączy zamówienia i produkty.
  • Dzięki kluczom obcym tworzymy relację między trzema tabelami, pozwalając na tworzenie wielu zamówień zawierających wiele produktów.
Przykład
CREATE TABLE produkty (
  id INT PRIMARY KEY,
  nazwa VARCHAR(100)
);

CREATE TABLE zamowienia (
  id INT PRIMARY KEY,
  data DATE
);

CREATE TABLE zamowienia_produkty (
  id_zamowienia INT,
  id_produktu INT,
  PRIMARY KEY (id_zamowienia, id_produktu),
  FOREIGN KEY (id_zamowienia) REFERENCES zamowienia(id),
  FOREIGN KEY (id_produktu) REFERENCES produkty(id)
);

📌 Relacja jeden do jednego (1:1)

✅ Przykład: Relacja jeden do jednego między tabelą pracownicy a tabelą adresy, gdzie każdy pracownik ma dokładnie jeden adres.

📌 Opis:

  • W tabeli adresy każdy rekord jest przypisany do jednego pracownika.
  • Relacja 1:1 oznacza, że jeden pracownik ma jeden adres, a jeden adres przypisany jest do jednego pracownika.
Przykład
CREATE TABLE pracownicy (
  id INT PRIMARY KEY,
  imie VARCHAR(50)
);

CREATE TABLE adresy (
  id INT PRIMARY KEY,
  id_pracownika INT,
  adres VARCHAR(100),
  FOREIGN KEY (id_pracownika) REFERENCES pracownicy(id)
);

Podsumowanie

  • Relacje między tabelami w MySQL pozwalają na połączenie danych z różnych tabel, co pozwala na ich efektywne przechowywanie i pobieranie.
  • Klucze obce są używane do definiowania relacji między tabelami. Zapewniają one integralność danych.
  • Relacja jeden do wielu (1:N) jest najczęściej stosowaną relacją, w której jedna tabela jest powiązana z wieloma rekordami w drugiej tabeli.
  • Relacja wiele do wielu (M:N) jest realizowana przez tabelę pośredniczącą, łączącą dane z dwóch tabel.
  • Relacja jeden do jednego (1:1) łączy dane w taki sposób, że jeden rekord z jednej tabeli jest powiązany z jednym rekordem z drugiej tabeli.