2016-03-21 2 views
0

Я занимаюсь разработкой таблицы для продвижения по службе. Я могу рекламировать три типа объектов: статьи, фотографии и темы форума.Множественные обнуляемые внешние ключи в одной таблице

Первоначально я думал о создании одной таблицы с тремя внешними ключами, где бы был установлен только один.

promotion: 
- id 
- id_article 
- id_photo 
- id_thread 
- promotion_type 
- ... other properties 

article: 
- id 
- .. other properties 

photo: 
- id 
- .. other properties 

thread: 
- id 
- .. other properties 

Действительно ли это хороший подход? После первоначальных мыслей это выглядит так, будто здесь может быть что-то «красивое». promotion_type указывает, какие таблицы внешних ключей должны быть соединены.

+1

'promotion_type' кажется излишним. – JamieD77

+0

по дизайну, это чтобы сохранить некоторое время соединения, потому что нам не нужно присоединяться ко всем таблицам, только те, которые необходимы. – SirKometa

+0

, который также может быть определен, с помощью которого id_ имеет правильное значение? – JamieD77

ответ

0

Вместо трех столбцов (id_article, id_photo, id_thread) просто добавьте один столбец .. Назовите это PromotionID, например, вы можете использовать столбец PromotionType, чтобы определить, какую таблицу связывать.

Таблица Promotion будет выглядеть следующим образом: -содействие: - идентификатор - PromotionID (либо id_article, id_photo или id_thread) - PROMOTION_TYPE - ... другие свойства

+0

Я бы не хотел ослабить целостность данных. С помощью FK сервер sql проверяет, действительно ли этот идентификатор существует в другой таблице. – SirKometa

Смежные вопросы