使用外键的数据库设计可能来自不同的表

时间:2013-10-16 19:15:23

标签: mysql database database-design mysql-workbench

我正在尝试为我的应用程序设计数据库,而我正在努力解决问题。

我需要存储一个集合:

enter image description here

如您所见,该集合具有ID和日期,目前为止很容易。 (请忽略analyzeID)

问题是目标,这有点棘手。集合可以有两种不同类型的目标(比方说,一本书或一本杂志 - 相互排斥),两者都有最终可能重合的ID,因为它们位于两个不同的表中。对此有什么好处? 我想创建两个不同的外键(一个用于书,另一个用于杂志),其中一个永远是NULL,我认为这远非最好的方法。

对不起,如果有什么不清楚,如果您有任何疑问,请问:)

谢谢!

1 个答案:

答案 0 :(得分:3)

在您的应用程序Book中,实体和Magazine实体似乎可以扮演相同的角色,它被称为目标角色。
它让我有一个书和杂志的基表,包含它们的共享属性,如名称,日期释放,......我将调用基表Writing表。

写作表将与杂志和书籍(forigen key)有一对一的关系 写作将成为书籍和杂志的主键。)
在集合表(target-id)中写入密钥将解决问题。

enter image description here