Как реализовать такое в mysql

254
01 марта 2017, 20:02

Здравствуйте. Скажите пожалуйста как такое реализовать. Есть 2 таблицы products(id, name, description) и images (id, id_product, name)

И я хочу сделать связь, что если удаляется продукт, то удаляются все изображения с этим продуктом, но в тоже время, чтобы можно было создать продукт БЕЗ изображений. Я пробовал так

ALTER TABLE tb_product
ADD CONSTRAINT tb_product_tb_image_id_product_fk
FOREIGN KEY (id) REFERENCES tb_image (id_product);

Вроде всё хорошо, но я не могу создать товар без изображений.

Answer 1

Это потому, что перепутали в направление связи. Констрейнт формируется в зависимой таблице. ( а как я понимаю картинка является зависимым объектом от продукта)

ALTER TABLE tb_images
ADD CONSTRAINT tb_image_tb_product_id_product_fk
FOREIGN KEY (product_id) REFERENCES tb_product (id) ON DELETE CASCADE;

По идее такой констрейнт с каскадным удалением приведет к 1. созданию индекса на поле product_id в таблице image, что ускорит джойны 2. невозможности вставить image без продукта 3. к удалению связанных image при удалении продукта

READ ALSO
Как подключиться к БД MySQL через Node.js в проекте Angular Universal?

Как подключиться к БД MySQL через Node.js в проекте Angular Universal?

Я хочу подключиться к БД MySQL через Nodejs в моем проекте на Angular Universal

348
Ошибка 0 rows update when that should have been 1

Ошибка 0 rows update when that should have been 1

Используется HeidiSQLMySql 5,7 х64

263
Изменить значение JSON в массиве [RethinkDB]

Изменить значение JSON в массиве [RethinkDB]

В RethinkDB есть строка формата:

308
Не могу удалить маркер

Не могу удалить маркер

Добавил в InfoWindow кнопку, но при нажатии ничего не происходит

378