KWALIFIKACJA INF3 - CZERWIEC 2016

PYTANIE NR 17.
Na rysunku została przedstawiona relacja jeden do wielu. Łączy ona
Ilustracja przedstawia diagram bazy danych, który jest typowym przykładem modelu relacyjnego.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Relacja jeden do wielu w modelu relacyjnym polega na tym, że rekordy z tabeli po stronie "wiele" wskazują na jeden rekord tabeli po stronie "jeden". Technicznie realizuje się to przez połączenie klucza obcego w tabeli podrzędnej (filmy.reżyserzy_id) z kluczem podstawowym tabeli nadrzędnej (reżyserzy.id).

Pełne wyjaśnienie:

Relacja jeden do wielu (1:N) oznacza, że jeden rekord w tabeli nadrzędnej może być powiązany z wieloma rekordami w tabeli podrzędnej. W typowym schemacie baz danych realizuje się to tak, że tabela po stronie "wiele" przechowuje identyfikator rekordu z tabeli po stronie "jeden".

Dlatego poprawne powiązanie w relacji 1:N to: klucz obcy w tabeli filmy (kolumna reżyserzy_id) wskazuje na klucz podstawowy tabeli reżyserzy (kolumna id). Taki zapis zapewnia, że każdy film może mieć przypisanego reżysera, a system bazy danych może pilnować integralności referencyjnej (nie da się wpisać reżyserzy_id, którego nie ma w reżyserzy.id, jeśli zdefiniowano ograniczenie FOREIGN KEY).

Pozostałe odpowiedzi są błędne z typowych powodów projektowych:

  • Połączenie dwóch kluczy podstawowych (filmy.id z reżyserzy.id) nie opisuje relacji 1:N między tabelami, tylko zestawia niezależne identyfikatory; nie tworzy to mechanizmu przypisania filmu do reżysera.
  • "Klucz obcy … z kluczem obcym …" jest logicznie niepoprawne jako definicja relacji nadrzędnej–podrzędnej, bo klucz obcy powinien wskazywać na klucz unikalny/klucz podstawowy w tabeli referencjonowanej.
  • "Klucz podstawowy filmy.id z kluczem obcym reżyserzy_id tabeli reżyserzy" odwraca role tabel: sugeruje, że to tabela reżyserzy referencjonuje filmy, co nie odpowiada typowemu modelowi "jeden reżyser – wiele filmów".

W praktyce egzaminacyjnej warto zapamiętać regułę: FK jest w tabeli po stronie "wiele" i wskazuje na PK (lub inny unikalny klucz) tabeli po stronie "jeden". To ułatwia zarówno interpretację diagramów, jak i pisanie złączeń JOIN.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Relacja jeden do wielu (1:N) oznacza, że jeden rekord w tabeli nadrzędnej może mieć przypisanych wiele rekordów w tabeli podrzędnej. W praktyce tabela po stronie "wiele" przechowuje identyfikator rekordu z tabeli po stronie "jeden" w postaci klucza obcego.
Na diagramach (np. ERD) strona "wiele" to ta, w której występuje kolumna przechowująca odwołanie do drugiej tabeli (czyli klucz obcy). Strona "jeden" to tabela, której klucz podstawowy/unikalny jest referencjonowany. Patrz na to, gdzie "wchodzi" FK.
Bo każdy rekord po stronie "wiele" musi wskazać, do którego rekordu po stronie "jeden" należy. Gdyby FK był w tabeli "jeden", nie dałoby się wygodnie przechować wielu powiązań bez tworzenia listy wartości lub dodatkowej tabeli. FK w "wiele" daje prosty, skalowalny model.
Łączy je referencja: wartość w kolumnie klucza obcego (FK) musi odpowiadać wartości w kolumnie klucza podstawowego (PK) tabeli nadrzędnej. Dzięki temu baza może wymuszać spójność danych, np. blokować wpisanie FK, który nie istnieje w tabeli nadrzędnej.
Najczęściej: (1) mylenie kierunku i łączenie filmy.id z reżyserzy.id, (2) uznawanie, że oba pola muszą być kluczami obcymi, (3) odwrócenie tabel (jakby reżyser "należał" do filmu). Poprawnie to film przechowuje reżyserzy_id.
Najczęściej tak, ale formalnie klucz obcy może wskazywać także na kolumnę (lub zestaw kolumn) objętą ograniczeniem UNIQUE. Warunek jest taki, że wartości w tabeli referencjonowanej muszą jednoznacznie identyfikować rekord, aby referencja była spójna i nie prowadziła do wielu możliwych dopasowań.
Integralność referencyjna oznacza, że baza pilnuje poprawności powiązań FK→PK/UNIQUE. Przykładowo: nie pozwala dodać filmu z reżyserzy_id, którego nie ma w tabeli reżyserzy, oraz może ograniczać usunięcie reżysera, jeśli istnieją filmy do niego przypisane (zależnie od reguł).
W relacji 1:N łączysz tabelę "wiele" z "jeden" po kluczu obcym i podstawowym. Typowy wzorzec to: filmy.reżyserzy_id = reżyserzy.id. Warto zapamiętać: w warunku złączenia po lewej często stoi FK z tabeli podrzędnej, a po prawej PK tabeli nadrzędnej.
Gdy jeden rekord z pierwszej tabeli może być powiązany z wieloma rekordami z drugiej i odwrotnie, np. filmy–aktorzy. Wtedy zwykle tworzy się tabelę pośrednią (asocjacyjną) z dwoma kluczami obcymi. Próba upchnięcia tego w 1:N prowadzi do duplikacji lub pól wielowartościowych.
Najpierw znajdź kolumnę wyglądającą na "odwołanie" (np. końcówka _id lub nazwa innej encji). Następnie ustal, w której tabeli ona jest — to zwykle strona "wiele". Na końcu dopasuj ją do klucza głównego w tabeli, do której nazwa sugeruje referencję.
info

To pytanie poprawnie rozwiązuje 53% zdających egzamin. trudne

Eksperci podkreślają: "Relacja jeden do wielu w modelu relacyjnym polega na tym, że rekordy z tabeli po stronie "wiele" wskazują na jeden rekord tabeli po stronie "jeden"."

Źródła:

  • PostgreSQL Documentation: Chapter "Foreign Keys" (DDL Constraints) https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-FK (dostęp: 2026-03-01)
  • MySQL 8.0 Reference Manual: "FOREIGN KEY Constraints" https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html (dostęp: 2026-03-01)
  • Microsoft Learn: "Relational data: relationships" (SQL concepts) https://learn.microsoft.com/en-us/training/modules/design-a-database-for-microsoft-sql-server/ (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja PostgreSQL: rozdział o kluczach obcych i ograniczeniach
  • Dokumentacja MySQL: sekcja o FOREIGN KEY i referential integrity
  • Materiały dydaktyczne do ERD i modelu relacyjnego (podręcznik/notesy szkolne) – rozdział o relacjach 1:N

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego