Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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
Java 在关系数据库中,是否应该;“父表”;参考a";“子表”;或者相反,这有关系吗?_Java_Mysql_Database_Jpa_Database Design - Fatal编程技术网

Java 在关系数据库中,是否应该;“父表”;参考a";“子表”;或者相反,这有关系吗?

Java 在关系数据库中,是否应该;“父表”;参考a";“子表”;或者相反,这有关系吗?,java,mysql,database,jpa,database-design,Java,Mysql,Database,Jpa,Database Design,我需要为我们的软件实现一些配置架构。 有一个Configuration表,有ConfigurationProductA和ConfigurationProductB扩展配置 通常,我选择在子项上添加外键,参考配置,但我的理由不是很好。这是因为我使用的是Hibernate/Jpa,可以(轻松)做到: 从父母那里引用孩子的优点和缺点是什么?最佳做法是什么?这取决于父母和孩子之间的关系类型: 假设一个子系统只有一个父系统,并且一个父系统可能有多个子系统,那么这就是一对多关系:您希望在子系统中存储父系统

我需要为我们的软件实现一些配置架构。 有一个
Configuration
表,有
ConfigurationProductA
ConfigurationProductB
扩展配置

通常,我选择在子项上添加外键,参考
配置
,但我的理由不是很好。这是因为我使用的是Hibernate/Jpa,可以(轻松)做到:


从父母那里引用孩子的优点和缺点是什么?最佳做法是什么?

这取决于父母和孩子之间的关系类型:

  • 假设一个子系统只有一个父系统,并且一个父系统可能有多个子系统,那么这就是一对多关系:您希望在子系统中存储父系统id

  • 如果一个孩子可能有多个父母,而一个父母可能有多个孩子,那么这就是一种多对多关系。在这种情况下,规范方法是使用一个额外的实体,称为连接表(或桥接表)来存储父/子关系


那么,您将在何时将孩子存储在家长中?从来没有?@Upsilon42在数据库中?从来没有在
@实体中
?取决于您希望如何查找子项。@Upsilon42:如果一个子项有多个父项,但每个父项只有一个子项。。。这似乎不是一个合理的“父/子”关系。定义“父”和“子”表。FK是一个列集,其值必须在其他位置显示为FK/UNIQUE。当它被声明&而不是被其他声明暗示时,就声明它。
@Entity
@Table(name="ConfigurationProductA")
@PrimaryKeyJoinColumn(name = "conf_id")
public class ConfiguratioProductA extends Configuration{/*...*/}