用网络结构表示实体类型及其实体之间联系的模型。顾名思义,一个事物和另外的几个都有联系,这样构成一张网状图。
发明简史
世界上第一个
网状数据库管理系统也是第一个DBMS是美国通用电气公司Bachman等人在1964年开发成功的IDS(IntegratedDataStore)。IDS奠定了
网状数据库的基础,并在当时得到了广泛的发行和应用。
美国的查尔斯·巴赫曼积极推动与促成了数据库标准的制定,1971年,数据库语言研究会(Conference On Data System Language,CODASYL)下属的数据库任务组(Data Base Task Group,DBTG)提出了一个系统方案——DBTG系统,也称CODASYL系统对网状
数据模型和语言进行了定义,并在1978年和1981年又做了修改和补充。因此网状
数据模型又称为CODASYL模型或DBTG模型。DBTG系统虽然不是实际的软件系统,但是它提出的基本概念、方法和技术具有普遍意义,对于网状数据库系统的研制和发展起了重大的影响。后来许多系统都采用DBTG模型或者简化的DBTG模型,如CuUinetSoftware公司的IDMS等。
1984年美国国家标准协会(ANSI)提出了一个网状定义语言(NetworkDefinitionLanguage,NDL)的推荐标准。在70年代,曾经出现过大量的
网状数据库的DBMS产品。比较著名的有Cullinet软件公司的IDMS,Honeywell公司的IDSII,Univac公司(后来并入Unisys公司)的DMS1100,HP公司的IMAGE等。 网状
数据库模型对于层次和非
层次结构的事物都能比较自然的模拟,在关系数据库出现之前网状DBMS要比层次DBMS用得普遍。在数据库发展史上,
网状数据库占有重要地位。
定义
现实世界中事物之间的联系更多的是非层次关系的,用层次模型表示这种关系很不直观,网状克服了这一弊病,可以清晰的表示这种非层次关系。
用有向图结构表示实体类型及实体间联系的数据结构模型称为网状模型(Network Model)。
网状模型取消了层次模型的不能表示非数状结构的限制,两个或两个以上的结点都可以有多个双亲结点,则此时有向树变成了有向图,该有向图描述了网状模型。
网状模型中以记录为数据的
存储单位。记录包含若干
数据项。
网状数据库的
数据项可以是多值的和复合的数据。每个记录有一个惟一地标识它的内部
标识符,称为码(DatabaseKey,DBK),它在一个记录存入数据库时由DBMS自动赋予。DBK可以看作记录的
逻辑地址,可作记录的替身,或用于寻找记录。
网状数据库是导航式(Navigation)数据库,用户在操作数据库时不但说明要做什么,还要说明怎么做。例如在查找语句中不但要说明查找的对象,而且要规定存取路径。
特征
网状模型的数据结构主要有以下两个特征:
(1)允许有一个以上的节点无双亲。
网状模型中每个结点表示一个记录型(实体),每个记录型可包含若干个字段(实体的属性),结点间的连线表示记录类型(实体)间的父子关系。
从定义可以看出,层次模型中子结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一。因此,在网状模型中要为每个联系命名,并指出与该联系有关的双亲记录和子记录。
实例
以学生选课为例讨论网状模型如何组织数据。
通常一个学生可以选修若干门课程,某一课程可以被多个学生选修,因此,学生与课程之间是多对多的联系。这样的实体联系图不能直接用网状模型来表示,因为网状模型中不能直接表示实体之间多对多的联系,为此引入一个学生选课的联结记录。它由3个数据项组成,即学号、课程号、成绩,表示某个学生选修某一门课程及其成绩。
这样,学生选课数据库包括3个记录类型:学生、课程和选课。
每个学生可以选修多门课程。显然对于学生记录中的一个值,选课记录中可以有多个值与之联系。而选课记录中的一个值,只能与学生记录中的一个值联系。学生与选课之间的联系是一对多的联系,联系名为学生-选课。同样,课程与选课之间的联系也是一对多的联系,联系名为课程-选课。
数据操作与完整性约束
网状模型的数据操作主要包括查询、插入、删除和更新。具体如下:
(1)进行插入操作时,允许插入尚未确定双亲结点值的子结点值。如可增加一名尚未分配到某个教研室的新老师,也可增加一些刚来报到还未分配宿舍的学生。
(2)进行删除操作时,只允许删除双亲结点值。如可删除一个教研室,而该科研室所有教师的信息仍保留在数据库中。
(3)修改数据时,可直接表示非树状结构,而无须像层次模型那样增加冗余结点,因此修改操作时只需要指定更新记录即可。
进行更新操作时只需更新指定记录即可。因此,一般来说,网状模型没有层次模型那样严格的完整性约束条件,但具体的网状数据库系统(如DBTG)对数据操作都加了一些限制,提供了一定的完整性约束。
DBTG在模式DDL中提供了定义DBTG数据库完整性的若干概念和语句,主要有:
(1) 支持记录码的概念,码是唯一标识记录的数据项的集合。
(2) 保证一个联系中双亲记录和子记录之间是一对多的联系。
(3) 可以支持双亲记录和子记录之间某些约束条件。如有些子记录要求双亲记录存在才能插入,双亲记录删除时也连同删除。
优缺点
优点
网状数据模型的优点如下。
(1) 能够更为直接地描述现实客观世界。可表示实体间的多种复杂联系。
(2) 具有良好的性能,存取效率较高。
缺点
网状数据模型的缺点如下。
(1) 结构比较复杂,其数据定义语言(DDL)、数据操作语言(DML)复杂,用户不容易使用。而且应用环境越大,数据库的结构就变得越复杂,不利于最终用户掌握。
(2) 数据独立性差,由于实体间的联系本质上是通过存取路径表示的,因此应用程序在访问数据时要指定存取路径。