W bazie danych uczelni są tabele Studenci i Kursy. Każdy student może zapisać się na wiele kursów, a na każdy kurs może być zapisanych wielu studentów. Jaką relację należy ustalić między tymi tabelami?
A. 1:n, gdzie 1 jest po stronie Kursu, a wiele po stronie Studenta
B. n:n
C. 1:1
D. 1:n, gdzie 1 jest po stronie Studenta, a wiele po stronie Kursu
Poprawna relacja to n:n. Wynika to z dwóch równoczesnych warunków: jeden student może uczestniczyć w wielu kursach, a jeden kurs może mieć wielu studentów. Taka zależność nie daje się zapisać jako proste 1:n bez utraty informacji, bo żadna ze stron nie jest wyłącznie „jedna” dla drugiej. W projektowaniu relacyjnej bazy danych relację n:n zwykle realizuje się przez tabelę pośrednią, np. Zapisy, zawierającą klucz obcy do tabeli Studenci i klucz obcy do tabeli Kursy. Reguła do zapamiętania: jeśli wiele rekordów z tabeli A może łączyć się z wieloma rekordami z tabeli B, relacja ma krotność n:n. Typową pułapką jest próba wpisania listy kursów w jednym polu studenta.
W tym przypadku trzeba rozpoznać krotność po obu stronach zależności. Relacja 1:1 oznaczałaby, że jeden student może być powiązany tylko z jednym kursem i jeden kurs tylko z jednym studentem, co nie pasuje do opisanej sytuacji. Relacja 1:n, gdzie 1 jest po stronie Studenta, a wiele po stronie Kursu, oznaczałaby, że jeden student ma wiele kursów, ale każdy kurs należy tylko do jednego studenta. To modeluje np. sytuację „autor - wiele wpisów”, a nie zapisy na kursy. Relacja 1:n, gdzie 1 jest po stronie Kursu, a wiele po stronie Studenta, oznaczałaby, że jeden kurs ma wielu studentów, ale każdy student może być zapisany tylko na jeden kurs. Poprawna odpowiedź to n:n, ponieważ wiele rekordów z tabeli Studenci może łączyć się z wieloma rekordami z tabeli Kursy. Typowy błąd myślowy polega na zauważeniu tylko jednej strony zdania i pominięciu warunku odwrotnego.