Вот пример: Первоначально у меня есть 3 таблицы. Таблица B ссылается на таблицу A. Итак, теперь таблица B имеет два первичных ключа. Один из них используется в качестве исходного первичного ключа, а другой - для обеспечения его связи с Tabe A. Затем я хочу, чтобы у таблицы B была связь «многие ко многим» с таблицей X. По мере добавления отношения MySQL Workbench добавлял таблицу Y с обоими первичными ключами таблицы B и одним первичным ключом в таблице X. Таким образом, таблица Y теперь имеет три первичных ключа.
Кажется, что второй первичный ключ из таблицы B в соединительной таблице не нужен, поскольку я могу идентифицировать таблицу B с исходным первичным ключом. Итак, мне все еще нужен дополнительный первичный ключ? Или, возможно, у меня не должно быть неопределенных отношений между таблицей A и B?
Таблица A и B имеют отношения, примерно такие, как у пользователя много сообщений. Сообщение должно принадлежать пользователю. Но у Post уже есть собственный первичный ключ, поэтому должен ли внешний ключ для пользователя быть первичным ключом?
EDIT
Вот сценарий (ссылка на схему ниже). Таблицы, на которых я сосредотачиваюсь, это snippet, snippet_topic и tag. Из того, что я знаю, поскольку каждый фрагмент должен принадлежать snippet_topic, он имеет идентифицирующую связь. Поэтому я использовал идентификационные отношения в MySQL Workbench, и они добавили идентификатор snippet_topic в качестве первичного ключа. После этого я добавил отношение m: n для тега и фрагмента. MySQL Workbench добавил идентификатор snippet_topic в таблицу соединений (но я его удалил). Что-то не так с моим дизайном? Или есть более правильный путь к этому?
Легенда:
Желтый значок - первичный ключ
Красный значок - не ноль