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

Как ссылаться на составной ключ?

Добрый день, знатоки.
При изучении SQL задался вопросом, но не смог найти ответа (как ни странно...):
у нас есть 3 таблицы: users, professions, user_professions (например). Тут связь многие-ко-многим между users и professions через таблицу user_professions. Соответственно user_professions имеет составной PRIMARY KEY в виде (users_id, profession_id). Но бывают такие ситуации, что связующая таблица является по совместительству отдельной сущностью и на неё кто-то должен будет ссылаться через FOREIGHN KEY. Но как тогда сослаться на составною ключ?
  • Вопрос задан
  • 2974 просмотра
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
banderos120
@banderos120
Играю на балалайке
dev.mysql.com/doc/refman/5.7/en/create-table-forei...
CREATE TABLE product (
    category INT NOT NULL, id INT NOT NULL,
    price DECIMAL,
    PRIMARY KEY(category, id)
)   ENGINE=INNODB;

CREATE TABLE customer (
    id INT NOT NULL,
    PRIMARY KEY (id)
)   ENGINE=INNODB;

CREATE TABLE product_order (
    no INT NOT NULL AUTO_INCREMENT,
    product_category INT NOT NULL,
    product_id INT NOT NULL,
    customer_id INT NOT NULL,

    PRIMARY KEY(no),
    INDEX (product_category, product_id),
    INDEX (customer_id),

    FOREIGN KEY (product_category, product_id)
      REFERENCES product(category, id)
      ON UPDATE CASCADE ON DELETE RESTRICT,

    FOREIGN KEY (customer_id)
      REFERENCES customer(id)
)   ENGINE=INNODB;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
severus256
@severus256
Code everywhere....
А почему проблема со ссылкой на составной ключ? :) Механизм же точно такой же.
Ответ написан
Ваш ответ на вопрос

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

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