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
IDz 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.