数据建模中的结构递归模式及其解决方案
1. 结构递归模式概述
在数据建模中,结构递归模式有着独特的特点。我们先来看一个一元结构递归的通用HERM模式示例。
- 初始类型L :也被称为叶类型或基类型,它可以是实体(0阶)或关系(1阶及以上)类型。若为实体类型,其主键由一个或多个自身属性构成;若为关系类型,它从所基于的实体类型继承键属性,键由这些属性构成,还可选择性地扩展自身属性。建模者也能决定覆盖继承的键属性,仅基于一个或多个自身属性为关系类型组合主键。
- 集群类型D :初始类型L被泛化为集群类型D,即域联合类型或公共类型。它可以添加自身的键或非键属性、所基于的实体或低阶关系,还能参与高阶关系。
- 递归类型R :结构递归通过关系类型R实现,也称为递归类型或复合类型。其每个数据实例基于初始类型L的实例或复合类型R的另一个实例。它基于D并同时被D泛化。尽管模型图会变成循环的,但任何有效数据库实例的数据实例中不应存在循环。为避免数据中的循环,需对R的每个数据实例r分配一个正整数秩,且该秩必须高于r直接基于的R数据实例的秩(若r不直接基于L的数据实例)。
此外,R从D继承键属性,由于结构递归,这种继承可能达到任意深度,导致R(和D)的键长度可变,形成具有复杂域的键。为避免这种情况,模式设计者可通过声明仅基于R或D的(局部)属性的显式主键来覆盖继承的键属性,但有些情况下无法实现,识别必须基于R实例所基于的D实例的整个序列。
以下是相关符号的含义:
|符号|含义|
| ---