2.1.3 数据模型
数据模型是描述数据库数据结构的模式,是对客观事物及其联系的数据描述,即概念模型的数据化。数据库设计的核心问题是设计一个好的数据模型。数据模型不同,相应的数据库系统就完全不同,任何一个数据库管理系统都是基于某种数据模型。
1)数据模型中的基本概念
(1)记录与数据项
在数据模型中,把描述一个实体的数据称为记录;把描述属性的数据称为数据项或字段。记录是由若干数据项组成。
一般采用属性名作为描述它的数据项名。但用作属性名时表示的是信息世界的信息,而用作数据项名时表示的是机器世界的数据信息,因此,它还包含了数据项的特征——数据类型与数据长度。
(2)型与值
由于实体分为实体型和实体值两个层次,所以在数据模型中表示它的记录与数据项也分为“型”与“值”两个层次。描述某一实体个体的数据是记录的值(简称记录),实体型为记录的型(在数据库系统中称为数据库文件的结构);属性是数据项的型,每个属性的值是描述该属性的一个数据项的值(某个记录的某个字段的值)。
2)数据模型的三要素
①数据结构:数据结构是对系统静态特性的描述,是刻画一个数据模型性质最重要的方面。其描述的内容包括两类:一类是与数据类型、内容、性质有关的对象,例如关系数据模型中的域、属性、关系等;另一类是数据之间联系的表示方式,例如关系数据模型中反映实体之间联系的关系。
②数据操作:数据操作是对系统动态特性的描述,是数据库各种对象的实例(值)允许执行的操作的集合,主要有检索和更新(插入、删除、修改)两类操作。数据模型必须定义这些操作的确切含义、操作规则、实践操作的语言。
③数据的完整性约束条件:数据的完整性约束条件是一组完整性规则的集合,给出数据及其联系所具有的制约、依赖和存储规则,用于限定数据库的状态和状态变化,保证数据库中的数据正确、有效、完全和相容。
3)数据模型的种类
数据库管理系统常用的数据模型有下列3种:层次模型、网状模型和关系模型,它们之间的根本区别在于数据结构的不同。层次模型用“树结构”表示实体以及实体与实体之间的联系,网状模型用“图结构”表示实体以及实体与实体之间的联系,关系模型用“二维表(或称关系)”表示实体以及实体与实体之间的联系。
(1)层次模型
层次模型是数据库系统最早使用的一种模型,它是按照层次结构的形式组织数据库中的数据,即实体和实体之间的联系都是用树形结构表示。
层次模型满足下面两个条件:
有且仅有一个结点无双亲,称为根节点;
其他结点有且仅有一个双亲。
在层次模型中,每个节点描述一个实体型,也称为记录型。一个记录型可以有很多记录值,简称记录。节点间的有向边表示记录间的联系。如果要存取某一记录型的记录,可以从根节点开始,按照有向树层次逐层向下查找,查找路径就是存取路径。
层次模型提供的数据操作包括查询、插入、删除和修改。
层次模型的完整性约束条件包含以下几方面:
进行插入操作时,如果没有相应的双亲节点的值,就不能插入子女节点的值。例如在某企业的机构设置的层次模型(图2-9)中,若新入职一名员工,但又尚未分配到某个部门,这时就不能将新员工插入数据库中。
进行删除操作时,如果删除双亲节点的值,则相应的子女节点的值也同时被删除。例如在图2-9的层次模型中,如删除人事处,则人事处的所有员工也将一起删除。
图2-9 某企业机构设置的层次模型
进行修改操作时,应修改所有相应记录,以保证数据的一致性。
层次模型的优点是结构清晰,各结点之间联系简单。用层次模型模拟现实世界层次结构的事物及其之间的联系是很自然的选择方式,比如表示行政层次结构、家族关系等都很方便。
层次模型的缺点是只能处理一对一、一对多的实体联系,不能表示两个以上实体之间的复杂联系和实体之间多对多的联系。
支持层次模型的DBMS称为层次数据库管理系统,在这种系统中建立的数据库是层次数据库。典型的层次数据库管理系统是IMS(Information Management System),由IBM公司研制成功。IMS于1969年投入运行,它在操作系统DOS/VS(Disk Operation System/Virtual Storage)支持下运行。
(2)网状模型
如果取消层次模型的两个限制,即两个或两个以上的结点都可以有多个双亲节点,则树结构就变成了图结构。用图结构表示实体及其之间联系的模型称为网状模型。网状模型的特征如下:
可以有一个以上的数据结点无双亲;
至少有一个数据结点有多于一个的双亲。
图2-10中给出了网状模型的结构示例。
图2-10 网状模型结构示例
网状模型是一种比层次模型更具有普遍性的模型,即用图结构表示实体以及实体之间的联系。它允许多个结点没有双亲结点,允许结点有多个双亲结点,还允许两个结点之间有多种联系(称为复合联系)。网状模型可以反映实体间存在的更为复杂的联系,而层次模型可视为网状模型的一个特例。与层次模型一样,网状模型中的每个节点表示一个记录型(实体型),节点间的连线表示记录型之间的联系。
网状模型提供的数据操作包括查询、插入、删除和修改。
网状模型没有像层次模型那样有严格的完整性约束条件。
网状模型的优点在于能够更为直观地描述现实世界,具有良好性能,存取效率较高。
网状模型的缺点在于结构复杂,而且随着应用环境的扩大,数据库的结构也变得越来越复杂,不利于终端用户掌握。
图2-11给出了学校中“院系”“教师”“学生”“课程”“教研室”之间的网状模型。
图2-11 网状模型举例
支持网状模型的DBMS称为网状数据库管理系统,在这种系统中建立的数据库是网状数据库。网状模型有很多成功的DBMS产品,其典型代表是DBTG(Database Task Group,数据库任务组)系统。1969年美国的CODASYL(Conference On Data System Language,数据系统语言协会)组织提出了一份“DBTG报告”,根据DBTG报告实现的系统一般称为DBTG系统。20世纪70年代的DBMS产品大部分是网状数据库系统,大都采用DBTG方案。如Honeywell公司的IDS/Ⅱ、HP公司的IMAGE、Univac公司的DMS 1 100、Cullinet公司的IDMS等。
由于层次模型和网状模型的天生缺点,因此,从20世纪80年代中期起其已被关系数据库管理系统取代。
(3)关系模型
1970年,美国IBM公司的研究员E.F.Codd在美国计算机学会会刊(Communications of the ACM)上发表了著名的论文“A Relational Model of Data for Large Shared Data Banks”,首次系统地提出了关系数据模型的相关理论。之后他又发表了多篇文章,奠定了关系数据模型的理论基础,标志着关系型数据库系统新时代的来临。E.F.Codd也因其杰出的贡献,于1981年获得了ACM图灵奖。从20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型。
关系模型是以关系代数理论为基础的数据模型。在关系模型中,实体和实体间的联系都是用关系表示。关系模型的数据结构是关系,关系可以简单地看成由行和列构成的规范化的二维表,见表2-2,表中的每一行记录就是一个实体。关系模型中实体与实体之间的联系也是通过关系进行表示,这一点与层次模型、网状模型都不一样。有关关系的形式化定义会在本章后续内容中详细介绍。
表2-2 规范化的二维表
关系模型的数据操作包括:查询、插入、删除和修改。
关系模型的完整性约束条件包括实体完整性、参照完整性、用户自定义的完整性。
关系模型具有以下优点:
有很强的数据表示能力和坚实的数学理论基础;
结构单一,数据操作方便,最易被用户接受;
关系模型的存取路径对用户透明,用户只要说明“干什么”,不必说明“怎么干”,从而大大提高了数据的独立性,简化了程序员的工作。
关系模型的查询效率不如非关系模型(层次模型、网状模型)高。因此,为了提高查询性能,必须对用户的查询请求进行优化,从而增加了开发数据库管理系统的负担。如今,有强大的查询优化功能,关系模型查询效率低的缺点已经不复存在。
相对层次模型和网状模型,关系模型发展较晚。但由于关系模型的优点,以关系模型建立的关系数据库是目前应用最广泛的数据库。目前绝大多数DBMS为关系型数据库管理系统。Microsoft SQL Server就是一种典型的关系型数据库管理系统。
以上3种模数据型的比较见表2-3。
表2-3 3种数据模型的比较