Это правильный способ построения соединительной таблицы, то есть таблицы мостов, в отношении NM.
Обоснование:
каждый order_id
(соответственно user_id
) должен ссылаться на запись в главной таблице orders
(соответственно users
), поэтому вы хотите, чтобы внешний ключ в каждом из этих столбцов обеспечивал целостность данных
каждый Кортеж (order_id, user_id)
должен встречаться в таблице моста не более одного раза: это может быть реализовано с помощью кортежа столбцов в качестве составного первичного ключа или путем установки на него ограничения unique
.
Конечно, также возможно определить независимый первичный ключ для таблицы соединений (например, auto-incrementend pk), но это в основном дело вкуса.