计算机无法直接存储和处理现实世界中的具体事物,需要采用一个数据模型对事物特征信息进行描述、组织并将其转换成数据,然后按照一定的方式组织和处理。数据模型是数据处理的关键和基础,是对现实世界数据特征的抽象(模拟),数据库系统按照数据模型才能实现对数据的组织和处理。
计算机代替人的脑力劳动进行大量数据处理的方法很重要。数据模型是对现实世界的模拟,用于描述数据的组织、存储和操作。更将现实中具体事物及其之间的联系转换为计算机能够处理的数据,需要利用特定数据模型对这些事物特征进行抽象、描述和表示。现实世界中事物描述的信息转换成数据库数据,需要经过3个阶段:现实世界、信息世界和机器世界。其转换过程如图1-6所示。
图1-6 数据抽象转换过程
1)现实世界。包括客观存在的现实世界中的事物(实体)及其联系。
2)信息世界。利用特定数据模型完成对现实世界事物的抽象描述(表示),即按用户的观点对信息和数据进行建模(概念模型—实体联系图)。
3)机器世界。主要描述数据在系统内部的表示方式和存储方法,在机器中的存储和存取方法是面向计算机系统的对数据最底层的抽象。
数据模型(Data Model)是数据结构和特征的抽象描述(表示)。用于对现实世界中的事物特征信息的抽象、表示和处理,DBMS对数据的所有操作都是建立在某种数据模型基础上的。
数据模型与现实世界和机器世界的关系
数据模型是对数据严格定义的一组结构、操作规则和约束的集合,描述了系统的静态特性、动态特性和完整性约束条件,数据模型由三要素 组成 :数据结构、数据操作和数据约束,如图1-7所示。
图1-7 数据模型及三要素的关系
1)数据结构,是信息世界中的实体(事物)及其之间联系的表示方法,各种数据模型都规定一种数据结构(存取及处理数据),主要描述系统的静态特性,是所研究的对象类型的集合。其对象是数据库的组成部分,描述内容包括两类,一是与数据类型、内容、性质有关的对象,如关系模型(二维表结构)中的域、属性(列)和关系(数据表);二是与数据之间联系有关的对象。
数据结构对于描述数据模型特性及构成极为重要。在数据库系统中,通常按照其数据结构的类型命名数据模型。如将层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型。
2)数据操作,是对数据库中的各种对象(型)的实例(值)允许执行的操作的集合,包括操作及其有关规则。对数据库的操作(逻辑处理)实际是对具体数据模型规定的操作,包括操作符、含义和规则等,用于描述系统的动态特性。如数据查询操作的命令语句、功能含义和语法格式。
3)数据约束,也称为完整性约束,是一组数据约束条件规则(条件和要求)的集合。完整性规则是给定的数据模型中的数据及其联系所具有的制约和依存规则,用于限定符合数据模型的数据库状态及其变化,以保证数据处理的正确、有效。如开车一定要遵守交通规则。
数据模型按应用层次可分成三类:概念数据模型、逻辑数据模型、物理数据模型。
1)概念模型(Conceptual Data Model)是概念数据模型的简称,也称信息模型,是对现实世界中问题域内事务(特性)的描述,是以数据库用户观点实现世界的模型(图形表示方式)。主要用于描述事物的概念化结构,使数据库的设计人员在设计的初期,避开计算机系统及DBMS具体技术问题,以图形化方式分析表示事物(实体)的数据特征(属性)及其之间的联系等,最常用的是实体联系模型(E-R图),详见1.2.2小节。
2)逻辑模型(Logical Data Model)是逻辑数据模型的简称,是以计算机系统的观点对数据进行建模,是直接面向数据库的逻辑结构,是对客观现实世界的第二层抽象,是具体的DBMS所支持的数据模型,如网状模型、层次模型和关系模型(二维表结构)。逻辑模型既要面向用户又要面向系统,主要用于DBMS实现,是对概念模型的进一步分解和细化。逻辑模型描述系统“做什么”及执行顺序,详见1.2.3小节。
3)物理模型(Physical Data Model)是物理数据模型的简称,是对真实数据库的描述,数据库中的对象包括表、视图、字段、数据类型、长度、主键、外键、索引和默认值。概念模型中的对象转换成物理模型中的对象,如存储位置、结构、方式、方法或索引,同具体DBMS、操作系统和硬件有关。逻辑模型的实现都有对应的物理模型。
概念模型是现实世界(事物特征)到信息世界的第一层抽象,是数据库设计人员与用户之间的交流工具,只需要考虑领域实体属性和关系,要求语义表达能力强且简单清晰、易于理解。
(1)实体的有关概念
1)实体(Entity)是现实世界中可以相互区别的事物或活动。如一个学生、一门课程、一本书或一件商品。
2)实体集(Entity Set)是同一类实体的集合。如一个班级的全体同学或一批货物中的商品。
3)实体型(Entity Type)是对同类实体共同特征和性质的抽象表示。如学生(学号,姓名,性别,出生年月,所在院系,入学时间)。对于同一实体,根据人们的不同认识和需要,可能抽取出不同特征,从而定义出不同的实体型。
4)实体值(Entity Value)是符合实体型定义的某个具体实体的描述(取值)。
实体、实体集、实体型和实体值等概念有时很难区分,常统称为实体,可根据内容知其含义。
【案例1-4】 大学教师的实体型可用(工号,系部编号,姓名,性别,年龄,职称,所在院系)表示,教师周凯的具体数据(A312,B3215,周凯,男,43,教授,信息学院网络工程)就是一个实体值,实体指的是现实世界中的具体对象(事物或活动)。在表1-1中,第一行规定了客户的实体型,从第2行开始各行是该实体型的取值。
表1-1 大学教师数据表
(2)联系的有关概念
1)联系(Relationship)是指现实世界中事物(实体)内部以及事物之间的联系,如学生与课程之间的选课关系、学生与图书之间的借阅关系和学生之间的同学关系。
2)联系集(Relationship Set)是同类联系的集合。如一个班级同学的所有选课、学生与图书之间的所有借阅、某学生所有的同学或一次展销会上的全部订单。
3)联系型(Relationship Type)是对同类联系共有特征的抽象定义(抽象表示)。
4)联系值(Relationship Value)是对同类联系型定义的某个联系的具体描述(值)。
联系、联系集、联系型、联系值等概念也常统称为联系,只有研究具体联系时才分别讨论。
【案例1-5】 对于学生“借阅”联系,联系型可以包括卡号、ISBN、是否续借、借书日期、还书日期等属性,其中卡号和ISBN分别对应“图书卡”实体和“图书”实体。表1-2中的第1行为借阅联系型,其后各行为借阅联系型的值(借阅记录)。
表1-2 学生图书借阅表
(3)属性、键和域
属性(Attribute)是描述实体或联系中的一种特征(性)。一个实体或联系通常具有多个(项)特征,需要用多个相应属性来描述。实体选择的属性由实际应用需要决定,并不唯一。如对于人事、财务部门都使用职工实体,但每个部门所涉及的属性不同,人事部门关心的是职工号、姓名、性别、出生日期、职务、职称、工龄等属性,财务部门关心的是职工号、姓名、基本工资、岗位津贴、内部津贴、交通补助等属性。
键(Key)或称码、关键字、关键码等,是区别实体的唯一标识。如学号、身份证号、工号、电话号码。一个实体可以具有多个键。如在职工实体中,若包含职工编号、身份证号、姓名、性别、年龄等属性,则职工编号和身份证号均可作为键。
数据库键的作用及特性
实体(描述事物或活动的关系表)中用作键的属性称为主属性(Main Attribute),否则称为非主属性(Nonmain Attribute)。如在职工实体中,职工编号为主属性,其余为非主属性。
域(Domain)是一组具有相同数据类型的值的集合。实体中属性的取值范围往往来自某个域。如姓名的属性域为字符串(字符型数据),性别属性域为(男,女)。
(4)实体型之间联系分类
实体型之间联系按照联系中实体的个数可分为3种情况:两个实体型之间的联系、两个以上实体之间的联系和单个实体型内的联系。上述3种情况中,按照一个实体型中的实体个数与另一个实体型中的实体个数的对应关系,均可分类为一对一联系、一对多联系、多对多联系这3种类型。
1)一对一联系。若实体集A中的每一个实体,在实体集B中至多有一个(可没有)实体与之联系,反之亦然,则这两个实体集之间的联系被定义为一对一联系, 简记为 1∶1。一对一联系可以在两个实体之间,如企业集团与总经理之间具有一对一联系;也可以在同一实体之间,如学生之间的“报名考试”联系,可表示为考试科目(学号,身份证号)。
2)一对多联系。若实体集A的任一实体,在实体集B中有n个实体(n≥0)与之联系,反之,对实体集B中的任一实体,在实体集A中至多有一个实体与之联系,则这两个实体集之间的存在一对多联系, 简记为1∶n 。一对多联系可在两个或两个以上实体型之间,也可以在同一实体型之间,如企业和客户之间的联系为两个实体之间的一对多联系,在一个购物表中客户与商品之间的关系为同一实体内的一对多联系。
3)多对多联系。若实体集A的任一实体,在实体集B中有n个实体(n≥0)与之联系,反之,对实体集B中的任一实体,实体集A中也有m个实体(m≥0)与之联系,则这两个实体集之间存在多对多联系, 简记为m∶n 。
【案例1-6】 高校学生与所选课程之间为多对多联系,每个学生允许选修多门课程,每门课程允许由多个学生选修。表1-3为学生实体,表1-4为课程实体,图1-8为多对多选课联系。
表1-3 学生数据表
表1-4 课程数据表
图1-8 选课联系图
由图1-8可知每个学生选修的课程,以及每门课程由哪些学生所选修。
1976年,由美籍华人Peter Pin-Shan Chen提出的实体联系模型(Entity Relationship model)也称 E-R 模型或E-R图(实体-联系方法),是描述现实世界中事物及其联系的概念模型,该模型提供了表示实体类型、属性和联系的方法,是数据库设计者与普通用户进行数据建模和交流沟通的有效工具,在应用软件研发等方面极为重要,其特点为简单易用、直观易懂。
E-R模型的主要作用
(1)E-R模型的构成要素
E-R模型是一种用E-R图表示实体及其联系的方法,E-R图包含4种基本元素:矩形、菱形、椭圆形和连接线。矩形 表示实体,矩形框内写上实体名;菱形 表示联系,菱形框内写上联系名;椭圆形 表示属性,椭圆形框内写上属性名;连接线 表示实体、联系与属性之间的所属关系或实体与联系之间的相连关系。
(2)实体联系的E-R图表示
两个实体之间的3种联系包括:一对一、一对多和多对多,对应的E-R图如图1-9所示。为了表示的简洁性,每个实体并没有画出其属性及属性实体间的连接线。
图1-9 3种联系的E-R图
若联系的两个实体均来自于同一个实体型,则对应的E-R图如图1-10所示。
图1-10 3种联系的单实体的E-R图
实际上,经常出现多个实体相互联系的情况。如在客户网购中,涉及客户、购物网站和商品三者的关系,客户通过购物网站购买商品,其中每两个实体间都是多对多的联系。一个客户可以购买多种商品,每种商品可以销售给不同的客户;每个客户可以到不同购物网站购物,每个购物网站可以为不同的客户服务;每个购物网站可以出售多种商品,每种商品可由不同的购物网站销售。网购联系对应的E-R图如图1-11所示。
图1-11 网购联系的E-R图
(3)E-R模型应用案例
实际的数据库设计过程中,首先要进行需求分析,确定存储哪些数据、建立哪些应用和哪些操作;然后是根据需求分析所得到的数据进行更高层抽象,这时需要引入E-R图来描述实体之间的联系。下面以电子商务(网络购物)应用为例,介绍一下E-R图的用法。
【案例1-7】 对电子商务(网络购物)应用建立E-R图的过程。通过对某购物网站运营情况调研,可以及时对业务数据进行整理分析。客户的一次购物活动为:先到某个购物网站(加盟的商家)订购某种商品,得到商家开出的(电子)订货单;客户凭依据订货单上的“金额”到金融机构(网银等)交款,获得“交款”确认;客户凭此提醒商家发货,商家见到“交款”后发给快递公司提货单,快递公司凭提货单取货(库房)并送货。网购对应的E-R图如图1-12所示。
图1-12 网络购物过程的E-R图
网站上的商家(如淘宝)可以通过加盟的多家购物网站进行运营,各购物网站需要涉及金融机构、客户、购物网站、商家、库房、快递公司、货物(商品)、收款单、订货单、加盟、提货单、送货等实体和联系,其中前面7个为实体,后面5个为联系。
说明: 上述“订货单”联系的购物网站和客户是多对多联系,每个购物网站可以为多个客户服务,每个客户可以到不同购物网站订购不同货物。“收款单”联系的客户和金融机构也是多对多联系,每个金融机构可以为多个客户服务,每个客户可以到不同金融机构交款。同样,“提货单”联系的购物网站和库房也是多对多联系,库房可为各网站服务,购物网站(委托快递公司)可凭收款单换取提货单取货。
E-R图的实际应用
在实际应用中,数据库系统中最常用的逻辑数据模型有层次模型、网状模型、关系模型和面向对象模型这4种类型。层次模型是20世纪60年代最早出现的数据模型,关系模型应用最广泛、最重要。
(1)层次模型的结构
层次模型 (Hierarchical Model)用树形结构表示现实世界中的实体及其之间的联系。有且只有一个没有双亲的根结点,其余结点为其子结点。除根结点外,每个结点有且仅有一个父结点(也称双亲结点),可有零个、一个或多个子结点,有零个子结点的结点被称为叶。每个结点表示一个记录类型,即概念模型中的一个实体型,每对结点的父子联系为一对多联系,只有一个子结点时表示一对一联系。描述企业组织结构的层次数据模型,如图1-13所示。企业集团为根结点,有多个分公司,分公司1有两个子结点(部门),部门1又有两个子结点(车间),车间是叶。
图1-13 企业组织结构的层次模型
(2)层次模型的优缺点
层次模型的优点主要有:①当现世界中的实体之间的联系自然呈现为层次关系(一对多的联系)时,表示一对多时结构简单清晰。②层次结构查询效率高,主要原因是DBMS指针效率高。主要缺点表现在:表示多对多的联系时比较复杂;查询子结点时必须通过双亲结点,影响效率。由于现实世界中事物之间的联系更多地表现为非层次关系,用层次模型表示非树形结构很不方便,为了克服这一问题产生了网状模型。
(1)网状模型的结构
网状模型 (Network Model)是对层次模型的扩展,允许一个以上的结点无双亲,同时也允许一个结点可以有多于一个的双亲。层次模型是网状模型中的一种最简单的情况。如图1-14所示是几个企业和生产零件的网状模型。
图1-14 网状模型示例
在网状模型中,父子结点联系同样隐含为一对多的联系,每个结点代表一种记录型,对应概念模型中的一种实体型。
(2)网状模型的优缺点
网状模型优点主要有:能比较直接地表示现实世界,如一个结点有多个双亲的情况;性能良好,有较高的存取效率。其主要缺点表现在:结构复杂,用户掌握困难;数据定义和数据操作需嵌入高级语言,用户掌握难度大。
网状模型的局限性
1970年,美国IBM公司的研究员E.F.Codd首次提出了数据库系统的关系模型,开创了数据库关系方法和关系数据库理论的研究,为数据库技术的发展奠定了重要基础,因其杰出贡献,于1981年获得ACM图灵奖。
关系模型应用最广泛,关系型数据库管理系统(RDBMS)采用关系模型作为数据组织方式。
(1)关系模型的概念
关系模型 (Relational model)的每个关系对应一张规范的二维表,其模型中的每个实体及其之间的联系都可直接转换为对应的二维表形式。每张二维表称为一个 关系 ,其中 关系的型 由二维表的表头确定,除表头之外表中的每行(表体)称为 关系的值 。二维表中的每一行称为一个 元组 (或 记录 ),二维表的每一列数据称为 属性 (或字段),给每一列起一个名称即 属性 名 (或字段名)。
【案例1-8】 数码商品的一个关系,如表1-5所示。该关系的型为(商品ID,商品名称,价格,品牌,型号,颜色,生产商,产地),关系的元组(行)数为5,关系的属性(列)数为8,其中第一列的属性名为“商品ID”。属性的取值范围称为属性的域,如价格属性的域为实型数,商品名称的域为字符型。
表1-5 数码商品一个关系示例
(2)联系的关系表应用
关系模型可以用“二维表”简单表示概念模型中的实体及其联系,对应某个关系,包括相联系的各实体的键。如表1-3、表1-4和图1-8表示的学生、课程及选课联系,对应的关系模型包含3个关系,包括学生关系、课程关系和选课联系,选课联系所对应的关系如表1-6所示,在此对选课联系增加了成绩属性,其语义是学生选修课程的成绩。
表1-6 选课联系的关系表
* (3)数据库的元关系
在关系模型为数据库逻辑结构建立的数据库系统中,所有数据及其结构(关系定义)都以关系(二维表)的形式定义和保存。为了区别于一般的保存数据的关系,将保存关系定义的关系(结构)称为该数据库的元关系(元数据、系统数据、数据字典等),其提供了数据库中所有关系的模式(即关系的型)。元关系是在用户建立数据库应用系统时,由DBMS根据该数据库中每个关系的模式自动定义(保存数据表结构备用)。学生选课关系模型的元关系(结构),如表1-7所示。
序号、属性名和类型
表1-7 学生选课关系模型的元关系
(续)
(4)关系模型中的查询和更新
在关系数据库中,进行业务数据的查询和更新运算非常方便,用户在每个关系(二维表)和相关的若干个关系上都可进行,相关关系是依靠关系之间共同使用的相同属性实现的(以键保持记录一一对应),其相同属性被称为连接属性或关联属性。
关系模型中的查询和更新
(5)关系模型的优缺点
关系数据模型的优点如下。
1)坚实的数学理论基础。关系模型与非关系模型不同,它建立在严格的数学概念基础之上。自从E.F.Codd首次提出了数据库系统的关系模型后,很多研究人员对该相关问题进行了具体研究,已经形成一系列完整的关系代数和集合论理论基础。
2)数据结构简单易懂,应用广。关系模型实体(事物)及其之间的联系都由关系(二维表)表示,既表示数据的存储,也表示数据之间的联系。从用户角度看,模型中数据的逻辑结构是一张二维表(结构),符合用户使用数据的习惯且直观便于实现,各关系(表)可作为一个文件保存,业务数据应用广泛。
3)数据存取路径对用户清晰明确,有较好的数据独立性和数据安全性,这种机制也简化了建立数据库和程序员的开发与维护工作。
4)查询与处理便捷。在关系模型中,数据的操作比非关系模型便捷,一次操作不只是一个记录(行),还可以是多行记录集合,特别是利用条件语句时,一次可操作所有满足条件的所有记录。
5)数据独立性高。在关系模型中,用户对数据的操作可以不涉及数据的物理(实际)存储位置,而只需给出数据所在的表、属性等有关数据自身特性,具有较高的数据独立性。
关系数据模型的缺点:一是查询效率低,关系型数据库管理系统RDBMS提供了较高的数据独立性和非过程化的查询功能,致使系统负载较重,直接影响查询速度和效率。二是RDBMS实现复杂,由于RDBMS效率较低,需对关系模型进行查询优化,其工作繁杂且实现难度较大。三是关系模型根本无法有效地处理复杂的特殊数据(如地理及图像或空间数据处理)。
关系模型的局限性
【案例1-9】 关系模型在空间数据表示的局限性。空间数据是指面向地理学及其相关对象的数据,主要包括地球表面、地质、大气等数据,这些数据具有数据量庞大、数据对象复杂和空间数据模型复杂等特点,关系模型仅针对常用的简单对象,无法表示空间数据。
关系模型用单一的二维表结构很难实现对空间复杂对象的描述,无法有效地管理各种复杂的地理对象,为了解决空间数据存储与管理问题,产生了空间数据库或专用数据库。
面向对象模型(Object-Oriented Model,OOM)是以面向对象方法描述实体的逻辑组织、对象间限制、联系等的模型。将客观事物(实体)都模型化为一个对象,每个对象有一个唯一标识。共享同样属性和方法集的所有对象构成一个对象类(简称类),而一个具体对象就是某类的一个实例。将面向对象建模能力和关系数据库功能结合,使面向对象的关系数据库技术成为一个研究方向。
(1)面向对象的基本思想
面向对象的基本思想:主要通过对问题域的自然分割,以更接近人的思维方式建立问题域的模型,并进行结构模拟和行为模拟,从而使设计的软件能尽可能地直接表现出问题的求解过程。
面向对象方法以接近人类思维方式的思想,将客观世界的实体模型化为对象。每一种对象都有各自的内部状态和运动规律,不同对象之间相互作用和联系构成各种不同的系统,万物一切皆对象。其基本方法是将系统工程中的模块和构件视为问题空间的一个(类)对象。
(2)面向对象方法的基本特性及技术
在“面向对象程序设计”等课程中,已经介绍过面向对象方法等相关概念。面向对象方法的特性,主要包括抽象性、封装性、继承性和多态性等。面向对象数据模型的核心技术,主要包括分类、概括、聚集、联合和消息。
面向对象的特性及核心技术
为了更清晰的了解以上4种模型,下面从发展历史、数据结构、数据联系等方面进行比较,见表1-8。
表1-8 逻辑数据模型的比较
1)什么是数据模型?数据模型的组成要素是什么?
2)E-R图基本构件有哪些?E-R图在信息系统项目中起到的作用是什么?
3)数据模型的种类有哪些?它们各自有什么特点?