KWALIFIKACJA INF3 - WRZESIEŃ 2014

PYTANIE NR 12.
Wskaż typ relacji pomiędzy tabelami: Tabela1 i Tabela3.
Ilustracja przedstawia diagram relacyjny baz danych, który jest typowym elementem egzaminów zawodowych dla techników
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Relacja "wiele do wielu" występuje wtedy, gdy pojedynczy rekord z Tabela1 może być powiązany z wieloma rekordami z Tabela3, a jednocześnie pojedynczy rekord z Tabela3 może łączyć się z wieloma rekordami z Tabela1.
W praktyce w relacyjnych bazach danych zwykle realizuje się to przez tabelę pośrednią z dwoma kluczami obcymi.

Pełne wyjaśnienie:

Relacja wiele do wielu (N:M) oznacza, że:

  • jeden rekord z Tabela1 może odpowiadać wielu rekordom z Tabela3,
  • i jednocześnie jeden rekord z Tabela3 może odpowiadać wielu rekordom z Tabela1.

W relacyjnych bazach danych taka relacja zazwyczaj nie jest implementowana jako bezpośredni klucz obcy pomiędzy dwiema tabelami, ponieważ pojedyncze pole nie może "przechować" wielu powiązań bez łamania zasad normalizacji. Zamiast tego stosuje się tabelę pośrednią (łącznikową/asocjacyjną), która zawiera co najmniej dwa klucze obce: jeden wskazujący na Tabela1 i drugi na Tabela3. Każdy wiersz tabeli pośredniej opisuje jedno konkretne skojarzenie.

Dlaczego pozostałe typy relacji nie pasują do sytuacji N:M?

  • "Jeden do wielu" opisuje przypadek, w którym jeden rekord z jednej tabeli może mieć wiele rekordów w drugiej, ale w drugą stronę każdy rekord wskazuje na dokładnie jeden rekord (typowe "rodzic–dziecko"). Gdy obie strony mogą mieć wiele powiązań, to już nie jest 1:N.
  • "Wiele do jednego" jest w praktyce tym samym co "jeden do wielu", tylko patrząc z przeciwnej strony relacji. To nadal nie oddaje symetrii N:M.
  • "Jeden do jednego" występuje wtedy, gdy rekordy parują się pojedynczo (najczęściej wymaga to ograniczenia unikalności na kluczu obcym). Jeśli którakolwiek strona może mieć więcej niż jedno powiązanie, relacja przestaje być 1:1.

Wskazówka egzaminacyjna: jeśli w schemacie widzisz tabelę, która "łączy" dwie inne tabele i ma dwa (lub więcej) klucze obce, bardzo często oznacza to relację wiele do wielu pomiędzy tymi tabelami nadrzędnymi.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Relacja wiele do wielu (N:M) zachodzi, gdy jeden rekord z tabeli A może być powiązany z wieloma rekordami z tabeli B oraz odwrotnie. W relacyjnych bazach danych zwykle realizuje się ją przez tabelę pośrednią, która przechowuje pary identyfikatorów (klucze obce) z obu tabel.
Najczęściej widać ją jako połączenie dwóch encji z krotnościami "wiele" po obu stronach. W schemacie relacyjnym (tabele) odpowiednikiem jest zwykle dodatkowa tabela łącznikowa, do której prowadzą klucze obce z obu stron.
Jedno pole (klucz obcy) w wierszu nie powinno przechowywać wielu wartości, bo to łamie normalizację i utrudnia zapytania. Dlatego N:M rozbija się na dwie relacje 1:N, stosując tabelę pośrednią przechowującą powiązania.
Tabela pośrednia (asocjacyjna) ma zwykle co najmniej dwa klucze obce: do tabeli pierwszej i trzeciej. Każdy jej wiersz oznacza jedno skojarzenie rekordów. Dzięki temu można mieć dowolną liczbę powiązań po obu stronach bez duplikowania danych.
W 1:N rekord po stronie "wiele" wskazuje na jeden rekord po stronie "jeden" (np. wiele zamówień jednego klienta). W N:M oba kierunki są "wiele", więc zwykle potrzebujesz tabeli pośredniej (np. produkty i kategorie).
Tak, to ta sama relacja opisana z innej perspektywy. Jeśli mówisz "wiele rekordów tabeli X wskazuje na jeden rekord tabeli Y", to z drugiej strony jest to "jeden rekord tabeli Y ma wiele rekordów tabeli X".
Bardzo często: użytkownicy–role, produkty–kategorie, artykuły–tagi, uczniowie–zajęcia. W takich przypadkach jedna strona może mieć wiele przypisań, a druga także, więc modeluje się to przez tabelę łącznikową.
Typowe pomyłki to wybór 1:N "z przyzwyczajenia", ignorowanie tabeli pośredniej oraz mylenie 1:1 z 1:N (brak sprawdzenia unikalności klucza obcego). Pomaga analiza: czy pojedynczy rekord może mieć wiele powiązań po obu stronach.
Zwykle używa się JOIN przez tabelę pośrednią: tabelaA JOIN tabelaLacznikowa JOIN tabelaB. Kluczowe jest łączenie po kluczach obcych tabeli łącznikowej. To standardowy wzorzec w raportach i listach powiązanych obiektów.
Ćwicz na schematach: zaznacz klucze główne i obce oraz sprawdzaj, czy klucz obcy jest unikalny. Ucz się rozpoznawać tabelę pośrednią i pamiętaj: N:M w relacyjnym modelu prawie zawsze oznacza dodatkową tabelę łączącą.
info

Około 44% zdających odpowiada poprawnie na to pytanie. trudne

Źródła:

  • Silberschatz, Korth, Sudarshan, "Database System Concepts" (rozdziały o modelu ER i mapowaniu związków na model relacyjny), wydanie podręcznikowe
  • R. Elmasri, S.B. Navathe, "Fundamentals of Database Systems" (część o związkach 1:1, 1:N, N:M oraz tabelach asocjacyjnych), wydanie podręcznikowe

Materiały:

  • Rozdziały o modelu ER i relacjach w podręcznikach baz danych
  • Ćwiczenia z projektowania ERD i zamiany N:M na tabelę pośrednią
  • Dokumentacja SQL (CREATE TABLE, FOREIGN KEY, UNIQUE) dla zrozumienia ograniczeń

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego