本文取材于一本名为《 Spring persistence with hibernate》的书,作者在此描述了每个表中每种具体类继承策略的缺点。在给定的示例中,Student和Teacher是Person类的子类,并且Person与Address类相关联。我无法理解以下给出的特定论点:-
对多态关联的支持不完善:
父类与另一个持久类相关联。在我们的示例中
假设Person与一个Address类相关联,因此Student和
教师也与地址相关联。映射此类的层次结构
根据这种方法,我们需要数据库中的这四个表
模式:PERSON,STUDENT,TEACHER和ADDRESS。如果地址有一个
与人的多对一关系(一个以上的人可能拥有
相同的地址),那么ADDRESS表应提供一个外键
引用所有PERSON,STUDENT和TEACHER表,以便建立
数据库级别的关系,但这是不可能的。
为什么地址表不能提供对PERSON,STUDENT和TEACHER表的外键引用?
最佳答案
假设您有三个不同的数据库表PERSON
,STUDENT
和TEACHER
,您将如何在表ADDRESS
上定义外键约束?
CONSTRAINT FOREIGN KEY fk_address_owner
ADDRESS.owner_id
REFERENCES (which table?) (id)
如您所见,您将必须指向三个数据库表。那不可能