外键约束与单独表(关系DB)的1对n和n对1

时间:2013-04-07 22:50:35

标签: performance hibernate relational-database foreign-key-relationship relational-algebra

这是一个设计问题。我很感兴趣,因为有性能影响,但是,在可理解性或语义方面我们有一个吗?

我见过很多人 - 特别是在企业环境中 - 让Hibernate生成单独的表,而不是创建外键约束。

特别是,如果你有表A和表B,并且关系是1对多,那么人们倾向于让Hibernate生成表A_B,其中包含A和B的主键,并展示了1对多的关系。更具体地说,它们将外键约束提取到一个新的 - 单独的 - 表中。

1)从性能的角度来看,这不是那么幸运,额外的表(更多的内存),通常需要更多的联接,这可能会对性能产生负面影响。当然,它取决于底层实现,因为通过缓存和智能游标管理,可以减轻这种情况。

2)语义和/或可理解性是否受到影响?如果是这样,规则永远不会查看生成的代码? (代码生成的拥护者将给出一个明确的NO)。这仅适用于从模型生成表格(如Hibernate允许您这样做)。

3)正常形式不受这种表格设计方式的影响,但是,当你试图强加更高的普通形式时,它确实会导致“表格爆炸”。

我真的不明白这个“最佳实践”(如果它是一个)是否有隐藏的含义,或者如果它只是在配置Hibernate时出错或缺乏理解; - )。

欢迎任何和所有意见!

编辑:表/关系不是n到m(多对多)。另外,你可以让Hibernate生成一个关系而不是外键约束,我的问题(上面的那个)就是为什么你会这样做的?!

0 个答案:

没有答案