网状数据模型
在现实世界中,许多事物之间的联系更多的是非层次结构的,用层次模型表示非树形结构是很不直接的,网状模型则可以克服这一弊端,可以清晰的表示这种非层次关系。网状模型的典型代表是DBTG系统(也称CODASYL系统)。它是20世纪70年代数据库系统语言研究会(conference on data m language,CODASYL)下属的数据库任务组(DBTG)提出的一个系统方案。
1. 网状模型的数据结构
满足下列两个条件的基本层次联系为网状模型:
l 有一个以上的结点没有双亲结点;
l 一个结点可以有多于一个的双亲结点。
网状数据模型是一种比层次模型更具普遍性的结构,它取消了层次模型的两个限制,允许多个结点没有双亲结点,允许结点可以有多个双亲结点,此外,它还允许两个结点之间有多种联系(称之谓符合联系)。因此网状模型可以更直接地描述现实世界,而层次结构实际上是网状结构的一个特例。
与层次模型一样,网状模型也使用记录与记录值表示实体集和实体;每个结点也表示一个记录实体,每个记录类型可包含若干字段,结点间的连线表示记录类型(实体)之间的父子关系。
网状数据结构可以有很多种,如图1.11中。其中(a),(b),(c)都是网状模型的例子。网状模型中的联系用结点间的有向线段表示。每个有向线段表示一个记录间的一对多的联系。网状模型中的联系简称为系。由于网状模型中的系比较复杂,两个记录间可以存在多种系,一个记录允许有多个双亲记录,所以网状模型中的系必须命名。用系名标识不同的系。例如1.11(a)中R3有两个有两个双亲记录R1和R2,因此我们把R1和R3之间的联系命名为L1,R2和R3之间的联系命名为L2。另外网状模型中允许有复合链,即两个记录之间可以有两种以上的联系,如图1.11(c)。
|
|
|
(a) | (b) | (c) |
图1.11 网状数据结构
实例1.4 利用网状模型组织数据图,描述学生社团、专业系、教研室、教师、学生及课程间的关系。
这是一个复杂网状结构(如图1.12所示)。学生社团与学生、专业系与学生、专业系与教师之间、教研室与教师这三个实体之间都是都是1﹕n联系(假设一个学生只能参加一个社团)。学生与课程之间是m﹕n的联系,即一个学生可以选修多门课程,一门课程可以由多个学生选修。
|
图1.12 学生与课程的网状模型 |
用网状结构表示实体类型及实体之间联系的数据模型称为网状模型。在网状模型中,一个子结点可以有多个父结点,在两个结点之间可以有一种或多种联系。记录之间联系是通过指针实现的,因此,数据的联系十分密切。网状模型的数据结构在物理上易于实现,效率较高,但是编写应用程序较复杂,程序员必须熟悉数据库的逻辑结构。
2.网状数据模型的操纵与完整性约束
网状模型的数据操纵主要包括查询、插入、删除和修改数据。网状数据模型记录间的联系比较复杂。一般地说,它没有层次模型那样严格的完整性约束条件,但具体的网状数据库系统对数据操作都加了一些限制,提供了一定的完整性约束。
l 插入数据时,允许插入尚未确定双亲结点值的子女结点值,如可增加一名尚未分配到某个教研室的新教师,也可增加一些刚来报到,还未分配宿舍的学生。
l 删除数据时,允许只删除双亲结点值,如可删除一个教研室,而该教研室所有教师的信息仍保留在数据库中。
l 修改数据时,可直接表示非树形结构,而无需像层次模型那样增加冗余结点,因此,修改操作时只需更新指定记录即可。
3. 网状模型的优缺点
网状数据模型的优点:
l 能更为直接地描述客观世界,可表示实体间的多种复杂联系。如一个结点可以有多个双亲、允许结点之间为多对多的联系;
l 具有良好的性能,存储效率较高。
网状模型的缺点:
l 结构复杂,其DDL语言极其复杂。
l 数据独立性差。由于实体间的联系本质上是通过存取路径表示的,因此应用程序在访问数据时要指定存取路径。