KWALIFIKACJA INF3 - CZERWIEC 2015

PYTANIE NR 17.
W celu stworzenia relacji wiele do wielu łączącej tabele A i B wystarczy, że
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Relację wiele‑do‑wielu w relacyjnej bazie danych realizuje się przez tabelę pośrednią, która przechowuje pary powiązań między rekordami. Taka tabela zawiera zwykle co najmniej dwa klucze obce wskazujące na klucze główne tabel A i B, co zapewnia spójność i brak duplikacji danych.

Pełne wyjaśnienie:

W relacyjnych bazach danych relacja wiele do wielu (M:N) 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 być powiązany z wieloma rekordami z tabeli A.

W praktyce takiej relacji nie implementuje się przez "bezpośrednie" dodanie pojedynczego klucza obcego z A do B (albo z B do A), ponieważ klucz obcy w jednej tabeli pozwala naturalnie opisać relację jeden do wielu (1:N), a nie M:N. Aby poprawnie zapisać wiele powiązań po obu stronach, stosuje się trzecią tabelę pośrednią (nazywaną też łącznikową lub asocjacyjną). Tabela ta przechowuje wiersze opisujące konkretne skojarzenia, np. (A_id, B_id).

Dlatego poprawne jest stwierdzenie: "zdefiniuje się trzecią tabelę z kluczami obcymi do tabel A i B". Takie rozwiązanie:

  • umożliwia zapis dowolnej liczby powiązań,
  • wspiera spójność referencyjną (FK),
  • ogranicza redundancję danych,
  • pozwala dodawać atrybuty relacji (np. data przypisania, rola, ilość).

Odpowiedź "tabelę A połączy się z tabelą B poprzez zdefiniowanie kluczy obcych" jest zbyt ogólna i w typowym ujęciu sugeruje brak tabeli pośredniej; samo "połączenie" dwóch tabel kluczami obcymi nie wystarcza do M:N bez struktury, w której zapisuje się wiele par powiązań.

Stwierdzenie "wiele rekordów z tabeli A zduplikuje się w tabeli B" opisuje antywzorzec: duplikowanie danych zwiększa ryzyko niespójności (aktualizacje w wielu miejscach) i zwykle narusza zasady normalizacji.

Odpowiedź "tabela A będzie zawierała te same pola co tabela B" myli podobieństwo schematu z relacją między encjami. Relacja wynika z kluczy i powiązań logicznych, a nie z tego, czy tabele mają takie same kolumny.

W zadaniach egzaminacyjnych warto pamiętać: jeśli relacja jest M:N, niemal zawsze szukasz tabeli pośredniej z co najmniej dwoma kluczami obcymi.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Relacja wiele do wielu (M:N) oznacza, że jeden rekord z tabeli A może być powiązany z wieloma rekordami z tabeli B, i odwrotnie. Przykład: jeden uczeń ma wiele zajęć, a jedne zajęcia mają wielu uczniów. W relacyjnych bazach danych realizuje się to przez tabelę pośrednią.
Tworzy się tabelę pośrednią (łącznikową), która zawiera co najmniej dwa pola będące kluczami obcymi do tabel łączonych. Każdy wiersz tej tabeli opisuje jedno powiązanie (np. A_id + B_id). Często ustawia się też klucz główny złożony.
Pojedynczy klucz obcy w tabeli zwykle pozwala wskazać jeden rekord z drugiej tabeli, więc naturalnie tworzy relację 1:N. Dla M:N trzeba zapisać wiele skojarzeń dla jednego rekordu po obu stronach, co wymaga osobnej struktury przechowującej wiele par powiązań.
Minimalnie zawiera dwa pola: identyfikator z tabeli A i identyfikator z tabeli B jako klucze obce. Dodatkowo może mieć własny klucz główny albo klucz złożony oraz atrybuty relacji, np. datę przypisania, status, ilość, rolę użytkownika czy kolejność elementów.
Popularne przykłady to: użytkownicy–role, produkty–tagi, artykuły–kategorie, zamówienia–produkty, uczniowie–zajęcia. W każdym z nich potrzebujesz tabeli pośredniej, bo jedna rola może dotyczyć wielu użytkowników, a użytkownik może mieć wiele ról.
Nie. Duplikacja danych prowadzi do redundancji i niespójności (np. zmienisz nazwę raz, a kopie zostaną stare). W bazach relacyjnych poprawnym podejściem jest normalizacja oraz tabela pośrednia, która przechowuje tylko identyfikatory powiązanych rekordów, a nie kopie całych wierszy.
Najczęściej: próba wstawienia wielu wartości do jednej kolumny (np. lista ID w polu tekstowym), tworzenie dwóch kluczy obcych bez tabeli łącznikowej, albo duplikowanie rekordów. Częsty jest też brak ograniczeń (FK), przez co powstają "osierocone" powiązania.
Sprawdź, czy istnieje tabela pośrednia i czy ma klucze obce do obu tabel. Oceń, czy da się dodać wiele powiązań dla jednego rekordu po obu stronach. Dobrą praktyką jest unikalność par (A_id, B_id), aby nie dublować tego samego powiązania.
Gdy sama informacja "A jest powiązane z B" jest niewystarczająca. Przykłady: data nadania roli, liczba sztuk produktu w zamówieniu, ocena ucznia w przedmiocie, status członkostwa w grupie. Wtedy tabela pośrednia staje się nośnikiem atrybutów relacji.
Ćwicz rozpoznawanie typów relacji na przykładach (1:1, 1:N, M:N) i rysuj proste ERD. Utrwal, że M:N wymaga tabeli pośredniej z kluczami obcymi. Warto też przećwiczyć zapytania JOIN przechodzące przez tabelę łącznikową.
info

Statystycznie 67% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Relację wiele‑do‑wielu w relacyjnej bazie danych realizuje się przez tabelę pośrednią, która przechowuje pary powiązań między rekordami."

Źródła:

  • PostgreSQL Documentation: "Foreign Keys" (DDL Constraints) https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-FK - accessed 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 - accessed 2026-03-01
  • Wikipedia (pl): "Relacyjna baza danych" (opis modelu relacyjnego i kluczy) https://pl.wikipedia.org/wiki/Relacyjna_baza_danych - accessed 2026-03-01

Materiały:

  • Dokumentacja SQL dla wybranego silnika (MySQL/PostgreSQL) – sekcje o kluczach obcych i constraints
  • Rozdziały z podręczników o modelu relacyjnym i normalizacji (1NF–3NF)
  • Ćwiczenia projektowe: rozpisanie encji i relacji (ERD) oraz implementacja w SQL

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego