Relacja jeden do wielu

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

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.