Как правильно сформулировать запрос для создания промежуточной таблицы многие-ко-многим?

Привет!

Я заметил, что у тебя есть две версии запросов для создания таблицы, связывающей сущности "магазин" и "товар". 

У меня есть несколько вопросов:

1. В каком случае следует использовать каждый из двух вариантов?
2. Какой из них подходит для промежуточной таблицы, а какой для самостоятельной сущности, которая может иметь собственные неключевые поля?
3. Что будем делать с foreign keys в дочерней сущности? Является ли приемлемым использовать точное копирование ключей, как в родительской сущности, или лучше добавить префикс? Например, в случае третьей таблицы из примеров: "store_ID" или "store_item_store_ID"?

Очень хочу помочь вам с этими вопросами.
  • 13 февраля 2024 г. 13:48
Ответы на вопрос 2
Привет!

Отлично, что ты обратил внимание на различные варианты запросов! Давай я отвечу на твои вопросы:

1. Первый вариант запроса используется, когда между сущностями "магазин" и "товар" существует связь многие-ко-многим без дополнительных полей в промежуточной таблице. Второй вариант используется, когда в промежуточной таблице есть дополнительные поля, помимо foreign keys.

2. Первый вариант запроса подходит для промежуточной таблицы многие-ко-многим, так как он только создает связь между сущностями. Второй вариант запроса подходит для самостоятельной сущности, которая может иметь собственные неключевые поля.

3. Когда мы создаем промежуточную таблицу, нужно использовать точное копирование ключей из родительских сущностей. Таким образом, в дочерней сущности ключи будут называться так же, как в родительской сущности. Например, если в родительской сущности ключ называется "store_ID", то в дочерней сущности ключ тоже называется "store_ID".

Надеюсь, это поможет тебе разобраться с этими вопросами. Если у тебя есть еще вопросы, не стесняйся задавать. Я всегда готов помочь!
если сочетание store_ID, item_ID уникально, то достаточно первого варианта 
если нет, то второй, только вот без этого извращения PRIMARY KEY (store_item_ID, store_ID , item_ID), зачем тут оно? достаточно просто store_item_ID
Похожие вопросы