Relacja jeden do wielu

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Opublikowano: Zaktualizowano:

Relacja jeden do wielu oznacza, że jeden rekord z pierwszej tabeli może być powiązany z wieloma rekordami z drugiej tabeli, ale każdy rekord z drugiej tabeli jest powiązany tylko z jednym rekordem z pierwszej tabeli.

Typowy przykład: jeden klient może złożyć wiele zamówień, ale jedno zamówienie należy do jednego klienta.

Gdzie umieszcza się klucz obcy?

W relacji jeden do wielu klucz obcy umieszcza się zawsze po stronie „wiele”.

Dla tabel:

  • Klienci — strona „jeden”,
  • Zamowienia — strona „wiele”,

należy dodać do tabeli Zamowienia pole, np. klient_id, które będzie wskazywać na klucz główny tabeli Klienci.

Przykład SQL

CREATE TABLE Klienci (
    ID INT PRIMARY KEY,
    imie VARCHAR(50),
    nazwisko VARCHAR(50),
    telefon VARCHAR(20)
);

CREATE TABLE Zamowienia (
    Identyfikator INT PRIMARY KEY,
    data DATE,
    klient_id INT,
    FOREIGN KEY (klient_id) REFERENCES Klienci(ID)
);

Jak rozpoznać poprawne rozwiązanie?

Jeżeli pytanie mówi, że jeden klient ma wiele zamówień, to tabela Zamowienia musi przechowywać informację, którego klienta dotyczy dane zamówienie. Dlatego klucz obcy znajduje się w tabeli Zamowienia, a nie w tabeli Klienci.

Czego nie robić?

  • Nie łączy się bezpośrednio pól ID z obu tabel, jeśli oba są kluczami głównymi.
  • Nie dodaje się klucza obcego po stronie „jeden”.
  • Nie tworzy się trzeciej tabeli — trzecia tabela jest typowa dla relacji wiele do wielu.