Проблема разработки кода такого типа заключается в том, что многие таблицы, содержащие несколько ссылок, не являются таблицами «многие ко многим» и имеют несколько ссылок по другим причинам. Например, я составлю схему для некоего вымышленного приложения, в котором что-то можно рассматривать как таблицу «многие ко многим», если это не так.
create table category (
id primary key,
...
);
create table sub_category (
id primary key,
category references category(id),
...
);
/* EDIT:
This is the table that could be regarded as many_to_many
by an automated system */
create table product (
id primary key,
category references category(id),
sub_category references sub_category(id),
...
);
Что-то может быть построено таким образом для простоты использования, без необходимости объединения нескольких таблиц в базе данных на веб-сайте, особенно если учитывать скорость. Для части кода было бы трудно однозначно сказать, что это «не много-много-много-много», в то время как разработчик должен иметь возможность легко это выяснить и добавить в строку много-много-мало под контрольной суммой.
Я считаю, что схема DBIX :: Class выводит хорошую отправную точку, и немного больше, особенно при работе с автоматической нумерацией в базах данных не-MySQL, между прочим. Мне часто нужно модифицировать выше, чем «Не изменять выше этой строки» (хотя many_to_many, конечно, может пойти ниже этой контрольной суммы, конечно.