网状模型
在现实世界中事物之间的联系更多的是非层次关系的,用层次模型表示非树形结构是很不直接的,网状模型就可以解决这一问题。
网状数据库系统采用网状模型作为数据的组织方式。网状数据模型的典型代表是UDBTG系统。
网状模型的数据结构
在数据库中,把满足以下两个条件的基本层次联系的集合称为网状模型:
- 允许一个以上的节点无双亲。
- 一个节点可以有多于一个的双亲。
网状模型是一种比层次模型更具普遍性的结构。他去掉了层次模型的两个限制,允许多个节点没有双亲结点,允许节点有多个双亲结点;此外还允许了两个节点之间有多种联系(称之为复合联系)。因此,网状模型可以更直接地去描述现实世界。而层次模型则是网状模型的特例。
与层次模型一样,网状模型中每一个节点表示一个记录类型(实体),每个记录类型可包含若干个字段(实体的属性),节点之间的连线表示记录类型(实体)之间的一对多的父子联系。
从定义可以看出,层次模型中子女节点和双亲结点的联系是唯一的,而在网状模型中这种子女节点和双亲结点的联系可以不唯一。因此,要为每个联系命名,并指出与联系有关的双亲记录和子女记录。
下面是网状模型的例子:
网状模型的数据操纵和完整性约束
网状模型一般来说没有层次模型那样严格的完整性约束条件,但具体的网状数据库系统对数据操纵都加了一些限制,提供了一定的完整性约束。
网状模型的优缺点
网状模型的优点主要有:
- 能够更为直接的描述现实世界,如一个点可以有多个双亲,节点之间可以有多种联系。
- 具有良好的性能,存取效率较高。
网状模型的缺点主要有:
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握。
- 网状模型的DDL、DML复杂,并且要嵌入某一种高级语言(如COBOL、C)中。用户不容易掌握,不容易使用。
- 由于记录之间的联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,因此用户必须了解系统结构的细节,加重了编写应用程序的负担。