Могу ли я иметь один столбец, который ссылается на несколько таблиц (ссылаются только на одну таблицу за раз)? - PullRequest
0 голосов
/ 10 апреля 2020

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

Первый дизайн:

service(id [PK], name, desc, max_guest, min_guest)
destination_spot(id [PK], name, longitude, latitude, desc)
review_service(id [PK], service_id [FK], feedback, rating, user_id [FK])
review_destination_spot(id [PK], destination_spot [FK], feedback, rating, user_id [FK])

Как видите, таблицы review_service и review_destination_spot содержит очень похожие атрибуты, за исключением столбцов service_id и destination_spot_id, но это всего лишь FK для других таблиц.

Затем я оптимизировал базу данных, обобщив таблицу обзора в одну таблицу и добавив один столбец type ( значения которого SERVICE или DESTINATION_SPOT) помогут определить, принадлежит ли проверка к услуге или месту назначения.

Идея состоит в том, чтобы объединить столбец service_id и destination_spot_id становится service_or_destination_spot_id, значением которого будет значение service_id или destination_location_id.

Это мой оптимизированный дизайн:

service(id [PK], name, desc, max_guest, min_guest)
destination_spot(id [PK], name, longitude, latitude, desc)
review(id [PK], type, service_or_destination_spot_id [FK], feedback, rating, user_id [FK])

As Вы можете видеть, что столбец service_or_destination_spot_id [FK] является ключом для соединения таблицы обзора с другими таблицами (service и destination_spot). Это то, что я называю «гибридной колонной». Я никогда не видел такой дизайн базы данных, и я не знаю, хорошо это или нет.

Могу ли я иметь столбец, который ссылается на несколько таблиц по внешнему ключу? (Что такое разумный ответ / решение? Должен ли я рассмотреть другой подход? Et c.)

...