关系数据库继承外键和主键

时间:2013-07-20 04:19:01

标签: database inheritance entity-relationship

我正在开发一个数据库,我试图推断出应用继承的最佳方法。

到目前为止,我有一个来自实体的2个子类,我在Extended Entity-Relationship Model to tables (subclasses)中询问了如何在关系表上实现它。

我决定选择Concrete Table,所以我创建了2个表,每个表对应一个Entity的每个子类。我遇到了两个问题:

  1. 我的主键是id int primary key autoincrement,这意味着每个表的第一行都会有id = 1。因此密钥实际上并不唯一,所以当从另一个表引用它时,无法知道我们引用的两个表子类中的哪一个(除非我添加了一个不必要的(?)额外列。

  2. 当添加引用所述id的外键时,外键应该引用两个子类表,但我不知道这是否可能。

  3. 关于如何做到这一点的任何想法或意见都可以提供很多帮助。感谢

1 个答案:

答案 0 :(得分:1)

让子类表引用父类可能是有意义的,而不是相反。然后,您可以在Entity表上拥有一个id列,该列是从子项到其父实例的唯一外键。当你想要使用数据来实例化代码中的对象时,这可能会有所帮助,因为你应该知道你正在实例化哪个类,而只关心它的祖先,而不是它的子代。