本文取材于一本名为《 Spring persistence with hibernate》的书,作者在此描述了每个表中每种具体类继承策略的缺点。在给定的示例中,Student和Teacher是Person类的子类,并且Person与Address类相关联。我无法理解以下给出的特定论点:-


  对多态关联的支持不完善:
  父类与另一个持久类相关联。在我们的示例中
  假设Person与一个Address类相关联,因此Student和
  教师也与地址相关联。映射此类的层次结构
  根据这种方法,我们需要数据库中的这四个表
  模式:PERSON,STUDENT,TEACHER和ADDRESS。如果地址有一个
  与人的多对一关系(一个以上的人可能拥有
  相同的地址),那么ADDRESS表应提供一个外键
  引用所有PERSON,STUDENT和TEACHER表,以便建立
  数据库级别的关系,但这是不可能的。


为什么地址表不能提供对PERSON,STUDENT和TEACHER表的外键引用?

最佳答案

假设您有三个不同的数据库表PERSONSTUDENTTEACHER,您将如何在表ADDRESS上定义外键约束?

CONSTRAINT FOREIGN KEY fk_address_owner
ADDRESS.owner_id
REFERENCES (which table?) (id)


如您所见,您将必须指向三个数据库表。那不可能

10-08 00:34