Przejdź do głównej treści

Relacja wiele-do-wielu

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Relacja wiele-do-wielu oznacza, że wiele rekordów z jednej tabeli może być powiązanych z wieloma rekordami z drugiej tabeli. W zapisie spotykanym w modelowaniu baz danych oznacza się ją jako n..m.

Przykład

Typowy przykład to relacja między tabelami uczniowie i kursy:

  • jeden uczeń może uczestniczyć w wielu kursach,
  • jeden kurs może mieć wielu uczniów.

Nie da się poprawnie zapisać takiej relacji przez dodanie jednego klucza obcego tylko do jednej z tych tabel, ponieważ powstałyby powtarzające się dane albo trudności z przechowywaniem wielu wartości w jednym polu.

Tabela pośrednia

Relację wiele-do-wielu rozwiązuje się przez utworzenie tabeli pośredniej, nazywanej też tabelą łączącą lub asocjacyjną. Tabela ta zawiera klucze obce wskazujące na klucze główne obu tabel.

Przykład struktury:

CREATE TABLE uczniowie_kursy (
    id_ucznia INT,
    id_kursu INT,
    PRIMARY KEY (id_ucznia, id_kursu),
    FOREIGN KEY (id_ucznia) REFERENCES uczniowie(id),
    FOREIGN KEY (id_kursu) REFERENCES kursy(id)
);

Ważne na egzaminie

Jeżeli w pytaniu pojawia się informacja o konieczności utworzenia tabeli pośredniej łączącej klucze główne obu tabel, chodzi o relację n..m, czyli wiele-do-wielu.

Relacje 1..1, 1..n oraz n..1 zwykle realizuje się za pomocą klucza obcego w jednej z tabel, bez dodatkowej tabeli pośredniej.