KWALIFIKACJA INF3 - TEST WIEDZY NR 3

PYTANIE NR 20.
Załóżmy, że projektujesz bazę danych dla sklepu internetowego. W której z poniższych sytuacji używasz relacji wiele-do-wielu?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Relacja wiele-do-wielu występuje wtedy, gdy wiele rekordów z jednej encji może łączyć się z wieloma rekordami drugiej encji. Przykład "zamówienie–produkt" spełnia ten warunek: jedno zamówienie ma wiele produktów, a ten sam produkt może pojawić się w wielu różnych zamówieniach (zwykle przez tabelę pośredniczącą).

Pełne wyjaśnienie:

Relacja wiele-do-wielu (N:M) zachodzi wtedy, gdy:

  • jeden rekord encji A może być powiązany z wieloma rekordami encji B, i jednocześnie
  • jeden rekord encji B może być powiązany z wieloma rekordami encji A.

W sklepie internetowym klasycznym przykładem jest para zamówienie–produkt. Jedno zamówienie zwykle składa się z wielu produktów (koszyk/pozycje), a ten sam produkt może zostać kupiony w wielu zamówieniach różnych klientów w różnym czasie. To dokładnie opis: "Każde zamówienie może zawierać wiele produktów, a każdy produkt może być w wielu zamówieniach".

W modelu relacyjnym relacji N:M nie realizuje się jednym kluczem obcym wprost, tylko przez tabelę pośredniczącą (asocjacyjną), np. "pozycje_zamówienia". Taka tabela zawiera co najmniej dwa klucze obce: do zamówienia i do produktu, a często także atrybuty relacji (np. ilość, cena w momencie zakupu).

Pozostałe odpowiedzi opisują inne typy relacji lub sztuczne ograniczenia:

  • "Każdy produkt może być przypisany tylko do jednej kategorii" opisuje relację wiele-do-jednego (z perspektywy produktu) lub jedna-do-wielu (kategoria ma wiele produktów), a nie N:M.
  • "Każdy klient może złożyć tylko jedno zamówienie" to relacja jeden-do-jednego (albo 1:0..1), bo klient nie może mieć wielu zamówień.
  • "Każda transakcja płatnicza jest przypisana do jednego zamówienia" wskazuje typowo relację jeden-do-jednego lub wiele-do-jednego (zależnie od założeń o liczbie płatności), ale w podanym brzmieniu nie tworzy N:M.

Na egzaminie warto szukać w treści dwóch niezależnych "wiele" po obu stronach relacji oraz pamiętać, że N:M niemal zawsze implikuje potrzebę tabeli łączącej.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Relacja wiele-do-wielu (N:M) oznacza, że jeden rekord z tabeli A może łączyć się z wieloma rekordami tabeli B, a jednocześnie jeden rekord z tabeli B może łączyć się z wieloma rekordami tabeli A. W praktyce realizuje się ją przez tabelę pośredniczącą.
Szukaj sytuacji, w której oba kierunki mają liczność "wiele": np. zamówienie zawiera wiele produktów, a produkt występuje w wielu zamówieniach. Jeśli tylko jedna strona ma "wiele", zwykle jest to relacja 1:N, nie N:M.
Jedno zamówienie może mieć wiele pozycji (wiele produktów), a ten sam produkt może zostać kupiony wielokrotnie w różnych zamówieniach. To tworzy "wiele" po obu stronach, więc modelowo jest to relacja N:M, którą rozbija się na tabelę pośredniczącą.
Najczęściej są to trzy tabele: zamówienia, produkty oraz tabela pośrednicząca, np. pozycje_zamówienia. W tabeli pośredniczącej przechowuje się klucze obce do zamówienia i produktu oraz atrybuty, np. ilość i cenę.
Tabela pośrednicząca (łącząca/asocjacyjna) to dodatkowa tabela, która zamienia relację N:M na dwie relacje 1:N. Zawiera zwykle dwa klucze obce (do obu tabel) oraz dane opisujące powiązanie, np. ilość produktu w zamówieniu.
Nie zawsze. Jeśli przyjmiesz założenie "produkt należy do jednej kategorii", wtedy jest to relacja 1:N (kategoria ma wiele produktów). Relacja N:M pojawia się dopiero wtedy, gdy produkt może należeć do wielu kategorii i kategoria zawiera wiele produktów.
Najczęstszy błąd to skupienie się na jednym zdaniu, np. "zamówienie ma wiele produktów", i automatyczne uznanie tego za N:M bez sprawdzenia drugiej strony. Drugi błąd to ignorowanie ograniczeń typu "tylko jedno", które zmieniają relację na 1:1.
Relacja 1:1 bywa sensowna, gdy obiekty są rozdzielone z powodów organizacyjnych, np. tabela klienci i tabela profil_dodatkowy (opcjonalny). W praktyce w e-commerce częściej spotyka się 1:N (klient–zamówienia) niż 1:1.
W tabeli pośredniczącej dodajesz dwa klucze obce: jeden do tabeli A, drugi do tabeli B. Często stosuje się też klucz główny złożony z tych dwóch pól lub dodatkowe ID oraz ograniczenie unikalności pary (A,B), aby nie dublować powiązań.
Często pojawiają się zadania o modelowaniu danych (ERD), doborze kluczy obcych, rozpoznaniu kardynalności oraz wskazaniu tabeli łączącej dla encji typu zamówienie–produkt. Warto ćwiczyć na przykładach sklepów i systemów rezerwacji.
info

To pytanie poprawnie rozwiązuje 65% zdających egzamin. średnie

Według specjalistów z branży: "Relacja wiele-do-wielu występuje wtedy, gdy wiele rekordów z jednej encji może łączyć się z wieloma rekordami drugiej encji."

Źródła:

  • Microsoft Learn — "Database design basics" (relationships overview), https://support.microsoft.com/en-us/office/database-design-basics-29f8f489-0e8d-4b31-8b5b-2b7f7f5fbb2b - dostęp 2026-03-01
  • W3Schools — "SQL Joins" (koncepcja łączenia tabel i relacji przez klucze), https://www.w3schools.com/sql/sql_join.asp - dostęp 2026-03-01
  • Wikipedia (PL) — "Model związków encji" (pojęcia encji i związków, kardynalność), https://pl.wikipedia.org/wiki/Model_zwi%C4%85zk%C3%B3w_encji - dostęp 2026-03-01

Materiały:

  • Dokumentacja o modelowaniu relacji w bazach danych (ERD, cardinality)
  • Materiały o projektowaniu schematu e-commerce: Orders–OrderItems–Products
  • Kursy SQL dotyczące kluczy obcych i tabel asocjacyjnych

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego