W modelu relacyjnym relacja jeden-do-wielu (1:N) oznacza, że jeden rekord w tabeli nadrzędnej (tu: rezyserzy) może być powiązany z wieloma rekordami w tabeli podrzędnej (tu: filmy). Technicznie realizuje się to tak, że tabela po stronie "wiele" przechowuje klucz obcy (FK), który wskazuje na klucz główny (PK) tabeli po stronie "jeden".
Skoro tabela filmy ma PK id oraz FK rezyserlD, a tabela rezyserzy ma PK id, to poprawne powiązanie jest następujące:
- filmy.rezyserlD (FK) → rezyserzy.id (PK)
Dlatego w zapytaniu SELECT warunek w klauzuli ON powinien łączyć te właśnie kolumny: filmy.rezyserlD = rezyserzy.id. Taki zapis zwróci rekordy filmów wraz z odpowiadającymi im danymi reżysera.
Dlaczego pozostałe odpowiedzi są błędne?
- filmy.id = rezyserzy.filmylD – odwołuje się do kolumny, której nie opisano w schemacie (po stronie reżyserów nie ma FK do filmów w relacji 1:N). Dodatkowo łączy PK filmów z hipotetycznym polem, co nie odpowiada opisanej relacji.
- filmy.id = rezyserzy.id – łączy dwie niezależne kolumny PK z różnych tabel. Zbieżność wartości byłaby przypadkowa i nie reprezentuje relacji film–reżyser.
- filmy.rezyserlD = rezyserzy.filmylD – po stronie reżyserów ponownie pojawia się pole niezgodne z opisem. W relacji 1:N nie oczekuje się w tabeli "jeden" listy identyfikatorów z tabeli "wiele".
Wskazówka egzaminacyjna: najpierw ustal, gdzie jest FK (zwykle w tabeli "wiele"), a potem w ON łącz FK = PK. To minimalizuje pomyłki typu "id=id".