Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 链接关系数据库中未知表的外键_Sql_Database_Orm_Foreign Keys_H2 - Fatal编程技术网

Sql 链接关系数据库中未知表的外键

Sql 链接关系数据库中未知表的外键,sql,database,orm,foreign-keys,h2,Sql,Database,Orm,Foreign Keys,H2,我目前正在尝试建立一个关系数据库(H2),将JAVA模型的面向对象结构投影到数据库的关系表中。我正在使用JDBC和H2 RDBMS 这就是我的问题: 我有一个类型为“attribute”的对象,应该存储在表“attribute”中。此属性的所有者可以是“Function”类型的对象,也可以是“Block”类型的对象,它们都有自己的表。一个属性对象只能由一个对象(函数或块)拥有,使其成为1:n基数 但是,我正在努力解决如何将所有者包括在属性表中的问题。如果我创建一个名为“ownerID”的表并在其

我目前正在尝试建立一个关系数据库(H2),将JAVA模型的面向对象结构投影到数据库的关系表中。我正在使用JDBC和H2 RDBMS

这就是我的问题: 我有一个类型为“attribute”的对象,应该存储在表“attribute”中。此属性的所有者可以是“Function”类型的对象,也可以是“Block”类型的对象,它们都有自己的表。一个属性对象只能由一个对象(函数或块)拥有,使其成为1:n基数

但是,我正在努力解决如何将所有者包括在属性表中的问题。如果我创建一个名为“ownerID”的表并在其中存储所有者的ID(顺便说一句,全局唯一的ID),那么数据库将丢失关于哪个表包含此ID的信息(即使它是GUID)

-例如,可以包含另一列,其中包含所有者ID所属的表的名称吗

-另一个想法是包含一个“functionOwnerID”列和一个“blockOwnerID”,并将其中一个留空,但这对我来说似乎是一个相当肮脏的解决方案

我希望我对问题的描述是清楚的,并提前感谢

致以最良好的祝愿, Moritz

“例如,可以包含另一列,其中包含所有者ID所属的表的名称吗?”

这就是多态关系的工作原理!:)

编辑:(是的,你可以这样做,事实上这很常见)


参考资料:

  • (Rails/ActiveRecord文档):
  • (Laravel/雄辩的文档):