Задать вопрос
@Filarru

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

Здравствуйте!

Есть две таблицы "магазин" и "товар". У них есть свои неключевые поля.

CREATE TABLE STORE (
store_ID INT NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
PRIMARY KEY (store_ID )
);

CREATE TABLE ITEM (
item_ID INT NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
PRIMARY KEY (item_ID)
);


Много разных магазинов и много разных товаров.
Это дает третью таблицу для реализации связи "многие-ко-многим".

НО! Не ясно, как именно должен выглядеть запрос при создании такой таблицы.
У меня написано два варианта:

CREATE TABLE STORE_ITEM (
store_ID INT NOT NULL,
item_ID INT NOT NULL,
PRIMARY KEY (store_ID, item_ID)
FOREIGN KEY (store_ID) REFERENCES STORE(store_ID)
FOREIGN KEY (item_ID) REFERENCES ITEM(item_ID)
);

или

CREATE TABLE STORE_ITEM (
store_item_ID INT NOT NULL AUTO_INCREMENT,
store_ID INT NOT NULL,
item_ID INT NOT NULL,
PRIMARY KEY (store_item_ID, store_ID , item_ID)
FOREIGN KEY (store_ID) REFERENCES STORE(store_ID)
FOREIGN KEY (item_ID) REFERENCES ITEM(item_ID)
);


ВОПРОСЫ:
1. Какой вариант и в каком случае должен применяться?
2. Первый вариант подходит для промежуточной таблицы, а второй для самостоятельной сущности где могут быть свои неключевые поля?
3. Приемлемо ли для сущности-потомка все поля foreign keys указывать точно так, как они указаны у родителя или лучше добавлять префикс? Например, для третьей таблицы из примеров: store_ID или store_item_store_ID?
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Тестировщик
    9 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Java-разработчик + ИИ
    9 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы