我有以下数据库设计(只保留基本信息):
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
是否可以从一列指向不同的表? 如果是怎么办? 这是好的设计吗(对我来说很自然,我可以想象用图片创建更多表格)
其他方法是引用其他表中的图片,但我需要某种映射表,但不确定它是否也是好的设计。
最佳答案
从数据库的角度来看,你不能有一个外部引用不同的表。 它一次可以引用一个表。 我可以想到三种解决方案:
- 在我看来,最好的解决方案是让父表对
monument
、restorer
和project
说artifact
>。后面的三个表将以artifact
表中的主键作为外键。这样你就可以在图片表中有一个单列,它将引用artifact
表。 - 或者您可以按照@CptMisery 在评论中的建议在
picture
表中指定多个列。 - 为所有这些创建多个图片表。这不是好的解决方案。
如果您正在使用任何持久性框架,那么第一个解决方案也可以解决动态查询问题。
关于mysql - 如何从一列引用不同的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41551851/