在关系数据库中链接未知表的外键
Posted
技术标签:
【中文标题】在关系数据库中链接未知表的外键【英文标题】:linking foreign Key of unknown table in a relational database 【发布时间】:2017-03-10 12:40:06 【问题描述】:我目前正在尝试建立一个关系数据库 (H2),它将 JAVA 模型的面向对象结构投影到我的数据库的关系表中。我正在使用 JDBC 和 H2 RDBMS。
所以这是我的问题: 我有一个“属性”类型的对象,它应该存储在“属性”表中。此属性的所有者可以是“功能”类型的对象,也可以是“块”类型的对象,它们都有自己的表。一个属性对象只能由一个对象(函数或块)拥有,使其成为 1:n 基数。
然而,我正在努力解决如何将所有者包含在属性表中。如果我创建一个名为“ownerID”的表并在其中存储所有者的 ID(顺便说一句,全局唯一 ID),则数据库缺少有关哪个表包含此 ID 的信息(即使它是 GUID)。
-例如,是否可以包含另一个包含 owner_ID 所属表的名称的列?
-另一个想法是包含一个“functionOwnerID”列和一个“blockOwnerID”,并将其中一个留空,但这对我来说似乎是一个相当肮脏的解决方案。
我希望我对问题的描述很清楚,在此先感谢!
最好的问候, 莫里茨
【问题讨论】:
【参考方案1】:“例如,可以包含另一个包含 owner_ID 所属表的名称的列吗?”
这就是多态关系的工作原理! :)
编辑:(是的,你可以这样做,这实际上很常见)
参考文献:
(Rails/ActiveRecord 文档):http://guides.rubyonrails.org/association_basics.html#polymorphic-associations (Laravel/Eloquent 文档):https://laravel.com/docs/5.4/eloquent-relationships#polymorphic-relations【讨论】:
以上是关于在关系数据库中链接未知表的外键的主要内容,如果未能解决你的问题,请参考以下文章