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 odnosi się zwykle do jednego rekordu nadrzędnego.
Przykład: jeden adres może być przypisany do wielu osób albo jedna osoba może mieć wiele zamówień. W bazie danych taka relacja jest najczęściej realizowana za pomocą klucza obcego.
Jak rozpoznać relację jeden do wielu?
W tabeli podrzędnej znajduje się kolumna przechowująca identyfikator rekordu z tabeli nadrzędnej.
Przykład:
Osoby.Adresy_id = Adresy.id
Oznacza to, że kolumna Adresy_id w tabeli Osoby wskazuje na kolumnę id w tabeli Adresy.
Pobieranie danych z relacji
Aby wyświetlić dane z obu tabel, należy użyć złączenia JOIN z warunkiem w klauzuli ON:
SELECT nazwisko, Miasto
FROM Osoby
JOIN Adresy ON Osoby.Adresy_id = Adresy.id;
Takie zapytanie zwróci nazwiska osób oraz miasta pobrane z odpowiadających im adresów.
Typowy błąd
Niepoprawne jest samo zapisanie:
SELECT nazwisko, Miasto FROM Osoby, Adresy;
Bez warunku połączenia powstanie iloczyn kartezjański, czyli każda osoba zostanie zestawiona z każdym adresem.