层次数据模型适合处理1:1和1:N的关系。现实世界中,不同的实体之间有许多是多对多的关系,即M:N的关系。例如,教师和学生、部件和零件、学生和课程之间等等,都构成复杂的网状关系。网状模型的数据组织是有向图结构,每个结点可有多个上级(父)结点。 最典型的网状数据模型是DBTG(Data Base Task Group)系统,也称为CODASYL系统。这是20世纪70年代数据库系统语言研究会CODASYL(Conference On Data System Language)下属的数据库任务组(Data Base Task Group)提出的一个系统方案。 网状结构是一种比层次模型更具有普遍性的结构,它去掉了层次模型的两个限制,允许多个结点没有双亲,允许结点有多个双亲结点,此外它还允许两个结点之间有多种联系(称之为复合联系)。因此,采用网状模型可以更直接地去描述现实世界,而层次模型实际上是网状模型的一个特例。 网状数据模型用有向图结构表示实体和实体之间的联系。有向图结构中的结点代表实体记录类型,连线表示结点间的关系,这一关系也必须是一对多的关系。然而,与树结构不同,结点和连线构成的网状有向图具有较大的灵活性。但与层次数据模型一样,网状模型也缺乏形式化基础。 在数据库中定义满足下面两个条件的基本层次联系的集合为网状模型: - 允许一个以上的结点没有双亲结点; - 至少有一个结点可以有多于一个的双亲结点。 有向图中的每个结点表示一个实体记录类型,每个记录类型包含若干数据项表示实体的属性。 结点之间的连线(有向边)表示不同记录类型之间的联系,由于任意两个不同的记录类型之间都可能有连线,甚至两个不同的记录类型之间可能有多条连线,所以必须为每条连线取一个单独的名字。但是,每一联系也必须是一对多的联系,即上一层记录类型和下一层记录类型的联系是1:N联系。 网状模型的建模规则: (1) 有向图的结点表示实体记录类型; (2) 父(主)记录类型和子(成员)记录类型必须是不同的实体类型。父子结点之间的联系(系)没有与之相关联的属性。 (3)在一个给定的联系(系)中最多有两个记录类型,且只能是1:N的二元关系。每个联系要有一个唯一的联系名。 |