MySQL несколько таблиц для ссылки на один и тот же внешний ключ - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть три таблицы, подобные этой.

location(id,name)

tour(id,name)

hotel(id,name)

над тремя таблицами (местоположение, тур и отель) есть много изображений.

Таким образом, традиционный способ хранения изображений будет

location_images(id,image_url,location_id)

tour_images(id,image_url,tour_id)

hotel_images(id,image_url,hotel_id)

Вместо того, чтобы хранить изображения в трех разных таблицах, подобных этой, можно ли создать одну таблицу для хранения всех трех типов изображений, подобных этой?

images(id,image_url,type,foreign_key)

Как мне добиться этого с помощью MySQL?

Как мне установить соединение foreign_key с type?

Я использую MySQL 5.7.24-0ubuntu0.18.04.1 (Ubuntu)

1 Ответ

0 голосов
/ 06 декабря 2018

Да, вы можете.

CREATE TABLE images (
id INT PRIMARY KEY AUTO_INCREMENT,
image_url VARCHAR(255) NOT NULL,
image_belongs_to_type ENUM('location', 'tour', 'hotel') NOT NULL,
post_id INT NOT NULL);

при вызове изображения просто укажите для сообщения ID значение ENUM.(расположение, тур и отель)

например:

select * from images where image_belongs_to_type ='location' and post_id = 'location_id'
select * from images where image_belongs_to_type ='tour' and post_id = 'tour_id'
select * from images where image_belongs_to_type ='hotel' and post_id = 'hotel_id'

ENUM - MySql

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...