Aby prawidłowo utworzyć relację typu m:n nienarażoną na redundancję danych, należy:
Źle. Bezpośrednie połączenie dwóch tabel nie pozwala poprawnie odwzorować wielu powiązań po obu stronach.
Źle. Sortowanie danych nie ma wpływu na strukturę relacji ani na redundancję.
Źle. Łączenie kluczy głównych również nie odwzoruje wielu powiązań i prowadzi do powielania danych.
Dobrze. Tabela pośrednicząca rozbija relację m:n na dwie relacje 1:n i eliminuje redundancję.
Relacji typu m:n (wiele do wielu) nie da się poprawnie odwzorować, łącząc dwie tabele bezpośrednio - kończy się to powielaniem danych. Rozwiązaniem jest tabela pośrednicząca (łącząca, asocjacyjna), która zawiera klucze obce wskazujące na obie tabele. Dzięki niej relacja m:n rozkłada się na dwie relacje typu 1:n, a każde powiązanie zapisujemy jako pojedynczy wiersz w tabeli łączącej. Taki model jest zgodny z normalizacją i nie wprowadza redundancji - dlatego poprawna jest tabela pośrednicząca.
Problem z tym pytaniem najczęściej bierze się z prób połączenia dwóch tabel wprost. Bezpośrednie spięcie kluczy obcych obu tabel nie pozwala zapisać sytuacji, w której jeden rekord wiąże się z wieloma rekordami po drugiej stronie i odwrotnie - żeby to objąć, trzeba by powielać dane, czyli wprowadzić redundancję. Tak samo nie pomoże łączenie kluczy głównych: to wariant tego samego błędu. Uporządkowanie (posortowanie) tabel dotyczy wyłącznie kolejności wyświetlania wierszy i nie zmienia struktury powiązań. Relację m:n poprawnie realizuje się przez tabelę pośredniczącą, która rozbija ją na dwie relacje 1:n i przechowuje każde powiązanie jako osobny wiersz.