如何从一列引用不同的表?

时间:2017-01-09 15:56:19

标签: mysql database-design

我有以下数据库设计(保持基本信息):

 TABLE monument
     PRIMARY KEY id
     name

 TABLE restorer
      PRIMARY KEY id 
      name

 TABLE project
      PRIMARY KEY id
      name

 TABLE restorer2project
     FOREIGN KEY restorer_id REFERENCES restorer(id),
     FOREIGN KEY project_id REFERENCES project(id)
     PRIMARY KEY (restorer_id, restoration_project_id)

 TABLE monument2project
     FOREIGN KEY monument_id  REFERENCES monument(id)
     FOREIGN KEY project_id REFERENCES project(id)
     PRIMARY KEY (monument_id, project_id)

项目可以有很多恢复者,并且有很多古迹。也可以在以后以相同的关系,但不同的日期重复项目。 我想创建表女巫将存储图片。

 TABLE picture
      PRIMARY KEY id
      reference_to_different_tables 

是否可以指向一列中的不同表格? 如果有,怎么样? 这是一个很好的设计(对我来说很自然,我可以设想用图片创建更多的桌子)

其他方法是引用其他表中的图片,但是我需要某种映射表,但不确定它是否也是好的设计。

1 个答案:

答案 0 :(得分:0)

从数据库的角度来看,您不能指向不同的表格。 它可以一次引用一个表。 我可以想到三种解决方案:

  1. 我认为最好的解决方案是让父表对artifactmonumentrestorerproject。后三个表将主键作为artifact表中的外键。这样,您可以在图片表中使用单列,这将引用artifact表。
  2. 或者您可以在评论中根据@CptMisery的建议在picture表中指定多个列。
  3. 为所有这些创建多个图片表。这不是一个好的解决方案。
  4. 如果您使用任何持久性框架,那么第一个解决方案也可以解决动态查询问题。