Почему мы должны определять внешние ключи как первичные ключи в сводной таблице? - PullRequest
0 голосов
/ 18 января 2020

Сегодня я столкнулся с чем-то, кто-то определил внешние ключи как первичные ключи в сводной таблице! Это почему? Влияет ли это на производительность? Каковы преимущества и варианты использования? Должны ли мы определять внешние ключи как первичные ключи в сводной таблице, чтобы сделать их уникальными?

Пример моего вопроса: enter image description here

Зачем определять наши внешние ключи отношения многие ко многим в качестве первичных ключей?

1 Ответ

1 голос
/ 18 января 2020

Это правильный способ построения соединительной таблицы, то есть таблицы мостов, в отношении NM.

Обоснование:

  • каждый order_id (соответственно user_id) должен ссылаться на запись в главной таблице orders (соответственно users), поэтому вы хотите, чтобы внешний ключ в каждом из этих столбцов обеспечивал целостность данных

  • каждый Кортеж (order_id, user_id) должен встречаться в таблице моста не более одного раза: это может быть реализовано с помощью кортежа столбцов в качестве составного первичного ключа или путем установки на него ограничения unique.

Конечно, также возможно определить независимый первичный ключ для таблицы соединений (например, auto-incrementend pk), но это в основном дело вкуса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...