KWALIFIKACJA INF3 - CZERWIEC 2022 (test 2)

PYTANIE NR 18.
Aby prawidłowo utworzyć relację typu m…n nienarażoną na redundancję danych, należy
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Relację m:n w relacyjnej bazie realizuje się przez tabelę pośrednią zawierającą co najmniej dwa klucze obce wskazujące na rekordy z obu tabel. Dzięki temu unika się powielania danych i łatwiej wymusza integralność referencyjną. Sortowanie tabel ani "bezpośrednie łączenie" kluczy nie zastępuje poprawnego modelu.

Pełne wyjaśnienie:

W relacyjnych bazach danych relacja wiele‑do‑wielu (m:n) nie jest zwykle implementowana jako pojedyncze "bezpośrednie" powiązanie dwóch tabel, ponieważ prowadzi to do problemów z powtarzaniem informacji i trudnością w utrzymaniu spójności.

Poprawnym podejściem jest utworzenie tabeli pośredniej (łącznikowej, pomocniczej). Taka tabela przechowuje pary powiązań, najczęściej w postaci dwóch kolumn będących kluczami obcymi do obu tabel. W praktyce często tworzy się w niej klucz główny złożony z tych dwóch kluczy obcych albo stosuje osobny identyfikator i unikalność pary.

Dlaczego to ogranicza redundancję? Ponieważ każda informacja o powiązaniu występuje tylko raz: wiersz w tabeli pośredniej oznacza jedno skojarzenie rekordu z tabeli A z rekordem z tabeli B. Dzięki temu nie trzeba powielać kolumn ani tworzyć wielokrotnych, powtarzających się zestawów danych w jednej z tabel.

Odpowiedź "posortować przynajmniej jedną z tabel" jest błędna, bo sortowanie dotyczy prezentacji wyników zapytań, a nie struktury relacji i nie wpływa na eliminację redundancji w schemacie.

Odpowiedzi o "bezpośrednim połączeniu kluczy obcych" lub "bezpośrednim połączeniu kluczy podstawowych" są mylące: w relacyjnym modelu nie "łączy się kluczy" jako operacji projektowej, tylko definiuje się kolumny oraz ograniczenia (np. klucze obce) w konkretnych tabelach. Bez tabeli pośredniej nie uzyska się poprawnego i elastycznego odwzorowania m:n.

W kontekście aplikacji internetowych (INF.3) to podejście jest kluczowe np. dla relacji użytkownicy–uprawnienia, produkty–kategorie czy posty–tagi.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Relacja m:n (wiele‑do‑wielu) oznacza, że jeden rekord z tabeli A może być powiązany z wieloma rekordami z tabeli B, a jednocześnie jeden rekord z tabeli B może mieć wiele powiązań z tabelą A. Przykład: produkty i zamówienia.
Stosuje się tabelę pośrednią (łącznikową), która zawiera co najmniej dwa klucze obce: jeden do tabeli A i drugi do tabeli B. Każdy wiersz takiej tabeli opisuje jedno powiązanie, bez powielania danych opisowych z tabel głównych.
Ponieważ w relacyjnym modelu danych nie da się bezpiecznie "wstawić wielu wartości" do jednej kolumny ani utrzymać przejrzystej struktury bez powtórzeń. Tabela pośrednia pozwala zapisać wiele powiązań w osobnych wierszach i łatwo wymuszać integralność referencyjną.
Zwykle ma dwa identyfikatory jako klucze obce (np. id_A i id_B). Często te dwie kolumny tworzą klucz główny złożony albo mają ograniczenie unikalności. Dodatkowo można dodać atrybuty relacji, np. ilość czy datę przypisania.
Nie. Sortowanie (np. w zapytaniu SQL przez ORDER BY) dotyczy kolejności wyświetlania wyników i nie zmienia modelu danych ani nie usuwa redundancji. Relacje i ich krotność wynikają ze struktury tabel, kluczy oraz ograniczeń.
W relacji 1:n jeden rekord z tabeli A może mieć wiele rekordów w tabeli B, ale rekord z B należy do jednego A (wystarczy klucz obcy w tabeli "n"). W relacji m:n obie strony mogą mieć wiele powiązań, więc potrzebna jest tabela pośrednia.
W praktycznym projektowaniu relacyjnej bazy danych nie jest to zalecane. Próby "bezpośredniego" odwzorowania m:n zwykle kończą się powielaniem danych albo przechowywaniem list wartości w polu, co utrudnia zapytania i łamie zasady normalizacji.
Redundancja to niepotrzebne powtarzanie tych samych informacji w wielu miejscach. Skutkiem są błędy aktualizacji (np. zmienisz dane w jednym miejscu, a w innym zostaną stare) i większe ryzyko niespójności. Poprawne relacje i normalizacja ograniczają redundancję.
Gdy sama relacja ma własne atrybuty. Przykład: w tabeli pozycji zamówienia oprócz id_zamówienia i id_produktu trzymasz ilość i cenę. To typowe w aplikacjach WWW, bo wiele informacji dotyczy właśnie powiązania, a nie samych encji.
Częsty błąd to mylenie operacji na danych (sortowanie, łączenie w zapytaniu) z projektowaniem schematu. Inny błąd to założenie, że klucz obcy "sam rozwiąże" m:n bez tabeli łącznikowej. Pomaga rysowanie ERD i wskazanie krotności przed wyborem odpowiedzi.
info

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

W praktyce zawodowej kluczowe jest to, że relację m:n w relacyjnej bazie realizuje się przez tabelę pośrednią zawierającą co najmniej dwa klucze obce wskazujące na rekordy z obu tabel.

Źródła:

  • PostgreSQL Documentation: Chapter 5. Data Definition, section "Foreign Keys" https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-FK (dostęp: 2026-03-01)
  • MySQL 8.0 Reference Manual: "CREATE TABLE ... FOREIGN KEY Constraints" https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html (dostęp: 2026-03-01)
  • Wikipedia (PL): "Związek wiele do wielu" https://pl.wikipedia.org/wiki/Zwi%C4%85zek_wiele_do_wielu (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja systemu SQL używanego na zajęciach (sekcje o kluczach obcych i integralności referencyjnej)
  • Podręcznik/opracowanie do modelowania ERD i normalizacji (1NF–3NF)
  • Ćwiczenia: projektowanie schematu dla relacji m:n i implementacja tabeli pośredniej w SQL

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego