【发布时间】:2014-02-02 03:28:41
【问题描述】:
在任何 web 应用程序中,我们都会遇到这样的场景,我们可以使用每个类层次结构的表 或每个子类的表。但重要的是要决定哪一个更适合您的用例。 我已经得出了我的基本理解,什么时候哪个更好?
Scenario :- 员工。永久和合同雇员扩展雇员。
存在两个选项:-
Option 1:- 每个类层次结构的表,我们在单个表中表示所有字段。
这样做的好处是,您可以从单个表中获取所有详细信息,并摆脱员工和永久/合同员工之间的连接。
所以提高了性能。但是是的,即使在您认为不可能的字段上,您也不能声明 not null 约束
永久雇员为空(因为我们在一张桌子上同时为永久雇员和合同雇员提供餐饮服务)。这是缺点。
Option 2:- 每个子类的表,其中我们有对父表的外键引用。在此处加入会降低性能。
但是,是的,您可以将约束设置为 no null ,这是您在第一个选项中无法做到的。
想知道它是否有更多方面或我的理解是否正确?
【问题讨论】:
-
您正在混合继承和关联。它们是不同的东西。这些策略仅适用于继承,不适用于关联。你的问题没有多大意义。 OneToOne 总是使用 2 或 3 个表。 OneToMany 总是使用 2 或 3 个表。
-
@JB 尼泽。你是对的,我在这里以某种方式混合了两个概念。纠正它。非常感谢。
标签: java hibernate web-applications database-design