继承可以在类型的级别上进行,也可以在表级别上进行,下面分别介绍。
1.类型继承
如希望在数据库中对那些是学生和教师的人分别存储一些额外的信息。
2.表继承
SQL-99中的子表(subtable)对应的是E-R概念中的特殊化/一般化。子表的类型必须是父表类型的子类型,因此,父表中的每一个属性均出现在子表中。
对子表的一致性要求。如果一个子表和一个父表中的元组对于所有的继承属性具有同样的值,则称子表中的元组符合(correspond to)父表中的元组。因此,相符合的元组表示同一个
实体。子表的一致性需求为:
•父表的每个元组至多可以与它的每个直接子表的一个元组符合。
• SQL-99有一个附加的约束,所有相符合的元组必须由一个元组派生(插入到一个表中)
子表可以采用无须复制所有的继承字段的有效方式进行存储,通常有如下两种方式:
・ 每一个表只存储主码(可能是从父表中继承来的)和局部定义的属性。继承属性(主码之外的)不需要存储,因为它可以基于主码与父表连接得到*
・ 每一个表存储所有继承的和局部定义的属性。当插入一个元组时,它仅仅存储在它被插入的那个表中,在它的每个父表中推断它的出现。因为不需要连接,所以可快速访问元组的所有属性。不过,一旦没有第二个一致性约束(即一个实体可能出现在两个子表中而不在它们的公共子表中出现),这种表达将导致信息重复的问题。