1、第5章 建立数据模型 第第5章章 建立数据模型建立数据模型 5.1 建立实体联系模型建立实体联系模型5.2 ER模型的设计方法模型的设计方法 5.3 ER模型向关系模型的转化模型向关系模型的转化 5.4 历史上有影响的数据模型历史上有影响的数据模型 5.5 数据模型与数据库系统的发展数据模型与数据库系统的发展 第5章 建立数据模型 5.1 建立实体联系模型建立实体联系模型 数据模型是数据库系统的核心和基础。 但现实世界总是先抽象成信息世界,然后才能转化为数据世界。 信息世界是对现实世界的抽象。 因此,信息世界不可能等价于现实世界。 但是,信息世界必须: (1) 真实。 忽略的是非本质内容,与研
2、究无关的内容; 抽象的是本质内容,确实存在的内容。 第5章 建立数据模型 (2) 完整、 精确。 信息世界应有丰富的语义表达能力,能模拟现实世界的各种情况。 (3) 易于理解,易于修改,特别是易于用户理解。 (4) 易于向DBMS所支持的数据模型转换。 现实世界抽象成信息世界的目的,是为了实现信息的计算机处理。 第5章 建立数据模型 信息世界中的数据模型又称为概念模型。 作为从现实世界到其他数据模型转换的中间模型,概念模型不考虑数据的操作,而只是用比较有效、 自然的方式描述现实世界的数据及其联系。 在设计概念模型时,最著名、 最实用的是P.P.S.Chen于1976年提出的“实体联系模型”(E
3、ntityRelationship Approach,简称ER模型)。 第5章 建立数据模型 5.1.1 实体联系模型的基本构成 实体联系(ER)数据模型所采用的三个主要概念是: 实体集、 联系集和属性。 实体集是具有相同类型及相同性质(属性)的实体集合。 联系集是指同类联系的集合。 在ER模型中,用矩形框表示实体集,矩形框中写上实体名,用椭圆表示属性,椭圆中标上属性名,实体的主码用下划线表示。 例如实体集职工可用ER模型表示,如图 5 1 所示。第5章 建立数据模型 图 5 1 职工的ER模型表示 性别年龄姓名职称职工号职工第5章 建立数据模型 实体集之间的联系集用菱形表示,并用无向边与相关
4、实体集连接,菱形中写上联系名,无向边上写上联系集的类型。 部门和职工间的联系可用图5 2所示的ER模型表示。图 5 2 部门和职工的一对多联系 部门工作职工1n第5章 建立数据模型 在图 5 2(a)中,无向边上的1和n表示了部门和职工的联系是一对多联系(或者说职工与部门之间是多对一联系),即表达了一位职工只能在一个部门中工作,而一个部门中可有位职工这一语义(注: 有些文献中使用带箭头的有向边表示联系集的类型)。 实体集间除了一对多(多对一)联系以外,还有一对一、 多对多联系。 第5章 建立数据模型 企业中除了职工、 部门实体集以外,还有工资、 项目等实体集,通过分析可知,企业中每一个职工有一
5、份工资单,而每一份工资单也只属于一个职工,所以职工和工资实体集之间的关系为一对一关系,简记为1 1。 另外,一个职工可参加多个项目,一个项目也由多个职工来参加,所以职工和项目实体集之间的联系是多对多的,简记为: m n。 它们的ER模型表示分别如图 5 3、 图5 4所示。 第5章 建立数据模型 图 5 3 职工和工资的一对一联系 职工拥有工资11第5章 建立数据模型 图 5 4 职工和项目的多对多联系 职工参加项目mn第5章 建立数据模型 5.1.2 多元联系 在ER模型中,可以表示两个以上实体集之间的联系,称为多元联系。 如图 5 5 中的联系签约就是一个三元联系。 图 5 5 包含了如下
6、的语义: 对于特定的影星和电影来说,该影星为演该电影只能和一个制片公司签约; 但一个制片公司可以为一部电影和几个影星签约,一个影星可以和一个制片公司签约主演多部电影。 第5章 建立数据模型 图 5 5 演员、 电影和制片公司之间的三元联系 演员签约电影m1制片公司n第5章 建立数据模型 一个多元联系集总可以用多个不同的二元联系集来替代。 考虑一个抽象的三元联系集R,它联系了实体集A、 B、 C。 可引进一实体集E替代联系R,然后,为实体集E和A、 B、 C建立三个新的二元联系集,分别命名为RA、 RB、 RC。 可以将这一过程直接推广到n元联系集的情况。 所以,理论上可以限制ER模型中只包含二
7、元联系集。 然而,在大部分情况下,使用多元联系集比二元联系集更方便。 第5章 建立数据模型 因为: (1) 多元联系集可以清晰地表示出几个实体集参与到一个联系集的情况,而转换为多个二元联系后,难以体现这种参与性。 (2) 对于为替代多元联系集而引进的实体集,有时不得不为其创建一个标识码。 因为每个实体必须可以相互区分。 创建的标识码和新建的多个二元联系一样,增加了设计的复杂度和对存储空间的需求。 第5章 建立数据模型 5.1.3 联系的属性 联系也可以具有单独的属性。 如在图 5 5 中,如果希望建立某演员和制片公司为一部电影签约的有关酬金,此时,不能把酬金作为演员的属性,因为一个演员可能签约
8、了多部电影,得到了不同的酬金; 也不能把酬金作为制片公司的属性,因为制片公司可能对不同影星支付了不同的酬金; 酬金也不能作为电影的属性,因为一部电影中不同的影星可能得到不同的酬金。 所以应该把酬金作为联系的属性,如图 5 6 所示。 第5章 建立数据模型 图 5 6 联系可具有属性 演员签约电影m1制片公司n酬金第5章 建立数据模型 5.1.4 自身联系 在一个联系中,一个实体集可以出现两次或多次,扮演多个不同角色,此种情况称为实体集的自身联系。 一个实体集在联系中出现多少次我们就从联系到这个实体集画多少条线,到实体集的每条线代表该实体集所扮演的不同角色。 图 5 7 是一个自身联系的例子。
9、第5章 建立数据模型 图 5 7 一个自身联系的例子 职工领导n1第5章 建立数据模型 图中给出了实体集职工的一个自身联系“领导”,同一部门中,职工与职工之间可有领导和被领导的关系,其中一位是另一位的领导。 图中的联系集是1 n,说明了一位职工(领导)可领导其他多名职工,而一位职工只被另一位职工(领导)领导。 第5章 建立数据模型 5.1.5 子类和isa层次联系 在信息世界中,常常需要描述这样的实体集A,A属于另一实体集B。 A中的实体都有特殊的属性需要描述,并且这些特殊属性对B中其他的实体无意义。 在ER模型中,称A是B的子类,或B是A的父类。 两类实体之间存在一种层次联系Isa(属于)。
10、 图 5 8(a)是它们的ER模型的表示方法。 第5章 建立数据模型 如果A和B存在Isa联系,则A中的每个实体a只和B中的一个实体b相联系,而B中的每一个实体最多和A中的一个实体相联系。 从这个意义上说,A和B存在一对一的联系。 但事实上,a和b是同一事物。 A可以继承B中的所有属性,又可以有自己特殊的属性说明。 用来区分A的主码也就是B的主码。 例如,企业中的职工实体集和经理实体集,存在着 Is-a联系,即经理是(is a)职工。 经理可以继承职工的所有属性,但又有“任职时间”这一其他职工没有的属性。 其ER模型如图 5 8(b)所示。 第5章 建立数据模型 图 5 8 具有Is-a联系的
11、ER模型A性别姓名年龄职工号职工Is-a经理任职时间Is-aB(a)(b)第5章 建立数据模型 5.2 ER模型的设计方法模型的设计方法 在设计ER模型时,首先必须根据需求分析,确认实体集、 联系集和属性。 一个企业(单位)有许多部门,就会有各种业务应用的要求,需求说明来自对它们的调查和分析。 有关需求分析的方法将在第 7 章中介绍,这里只介绍ER模型的设计方法。 在介绍设计ER模型的方法之前,首先强调三条设计原则: 第5章 建立数据模型 (1) 相对原则: 关系、 实体、 属性、 联系等,是对同一对象抽象过程的不同解释和理解。 即建模过程实际上是一个对对象的抽象过程,不同的人或同一人在不同的
12、情况下,抽象的结果可能不同。 (2) 一致原则: 同一对象在不同的业务系统中的抽象结果要求保持一致。 业务系统是指建立系统的各子系统。 (3) 简单原则: 为简化ER模型,现实世界的事物能作为属性对待的,尽量归为属性处理。 第5章 建立数据模型 属性和实体间并无一定的界限。 如果一个事物满足以下两个条件之一的,一般可作为属性对待: (1) 属性不再具有需要描述的性质。 属性在含义上是不可分的数据项。 (2) 属性不能再与其他实体集具有联系,即ER模型指定联系只能是实体集间的联系。 例如,职工是一个实体集,可以有职工号、 姓名、 性别等属性,工资如果没有需要进一步描述的特性,可以作为职工的一个属
13、性。 但如果涉及到工资的详细情况,如: 基本工资、 各种补贴、 各种扣除时,它就成为一个实体集,如图 5 9 所示。 第5章 建立数据模型 图 5 9 工资由属性变为实体集 职工姓名性别年龄职称职工号姓名性别年龄职称职工号工资工资工资号基本工资补贴失业险职工拥有11第5章 建立数据模型 再如,仓库和货物的关系。 如果一种货物只存放在一个仓库中,那么仓库可作为货物的属性加以说明。 但如果仓库与职工发生联系(每个仓库有若干个保管员),那么仓库就应该作为一个实体集加以说明,如图 5 10 所示。 设计一个较大型的企业或单位的ER模型,一般按照先局部,后整体,最后优化的方法进行。 下面以企业职工管理系
14、统为例,说明ER模型的一般设计过程。 第5章 建立数据模型 图 5 10 仓库由属性变为实体集 货号货物货号名称货物名称仓库号存量存放职工职工号姓名年龄管理仓库号面积存量仓库mn1n第5章 建立数据模型 例 5.1 企业职工管理中,需要涉及的功能有: 人事处对职工的档案和部门进行管理,包 括职工基本情况,部门的基本情况以及各种职称、 职务的管理; 财务处管理职工的工资情况; 科研处管理项目、 职工参加项目的情况。 第5章 建立数据模型 1. 确定局部应用范围,设计局部ER模型 局部ER模型的设计步骤如图 5 11 所示。 1) 确定局部应用范围 本例中初步决定按部门划分不同的应用范围,即分为三
15、个子模块: 人事管理、 工资管理和项目管理。 下面以人事管理为例,说明设计局部ER模型的一般过程。 2) 确认实体集 在人事管理中,需要对职工、 部门、 职称职务进行管理,所以实体集有: 职工、 部门、 职称职务。 第5章 建立数据模型 图 5 11 局部ER模型的设计步骤 需求分析确定局部应用范围定义实体、联系、属性设计局部E-R图修改否?进入“全局E-R模型的设计”NY第5章 建立数据模型 3) 确认实体集间的联系集 需要判断所有二二实体集之间是否存在联系。 职工与部门: n 1; 职工与职称职务: m n,因为多个职工可有同一种职称或职务,而一个职工既可有职称又可有职务。 如某职工具有高
16、级职称(高工),同时又是处级干部。部门与职称职务之间没有联系。 4) 确认实体集的属性 职工: 职工号,姓名,性别,年龄。 部门: 部门号,名称,电话。 职称职务: 代号,名称,津贴,住房面积。 第5章 建立数据模型 5) 确认联系集的属性 职工与部门的联系没有单独的属性,职工与职称职务的联系有单独的属性: 职称或职务的任职日期。 6) 画出局部ER模型 图 5 12、 图5 13、 5 14分别是人事管理、 工资管理和项目管理局部ER模型。 第5章 建立数据模型 图 5 12 人事管理局部ER模型 职称职务任职职工性别年龄工资职工号分工部门部门号名称电话负责人任职日期代号名称津贴面积姓名nm
17、1n第5章 建立数据模型 图 5 13 工资管理局部ER模型 姓名性别年龄职工号工资工资号基本工资保险实发工资补贴职工拥有11第5章 建立数据模型 图 5 14 项目管理局部ER模型 职工性别年龄职务职工号参加项目项目号名称起始鉴定日期起始日期姓名nm第5章 建立数据模型 2. 集成局部ER模型,形成全局初步ER模型 将所有局部ER模型集成为全局ER模型。 设计过程如图 5 15 所示。 由于各个局部应用所面对的问题不同,且通常由不同的设计人员进行局部ER模型的设计,因此各个局部ER模型之间必定会存在许多不一致的地方,称为冲突。 所以在合并各局部ER模型时,首先要合理地消除各局部ER模型之间的
18、冲突。 第5章 建立数据模型 图 5 15 全局ER模型的设计步骤 局部 E-R 模型检查并消除冲突合并局部 E-R 图修改否?进入“全局模型优化”NY确定公共实体型第5章 建立数据模型 冲突主要有以下三类: (1) 命名冲突: 包括实体集名、 联系集名、 属性名之间的同名异义和同义异名等命名冲突。 同名异义,即不同意义的对象在不同的局部ER模型中具有相同的名称。 同义异名,即同一意义的对象在不同的局部应用中具有不同的名称。 例如,对于实体集职工,人事部门称之为职工,科研部门可能称之为科研人员。 命名冲突必须通过各部门一起讨论,协商解决。 第5章 建立数据模型 (2) 属性冲突: 包括属性值类
19、型、 取值范围、 取值单位的冲突。 例如,职工号,在一个局部ER模型中定义为整数,在另一个ER模型中定义为字符串。 有些属性采用不同的度量单位,也属于属性冲突。 (3) 结构冲突: 包括两种情况,一是同一对象在不同应用中具有的抽象不同,二是同一实体在各局部应用中包含的属性个数和属性排列次序不完全相同。 例如,在人事部门中,工资可能作为职工的一个属性处理,而在财务部门中作为一个实体集。 第5章 建立数据模型 有时实体集间的联系在不同的局部应用中,可能会有不同的联系集。 根据需求分析,在兼顾的情况下,对发生冲突的属性、 实体集、 联系进行合理的调整和综合,形成一个全系统用户共同理解和接受的统一的E
20、R模型,是合并各局部ER模型的主要工作和关键所在。 在本例5.1中,就存在结构冲突。 在人事管理ER模型中,工资作为职工的属性,而在工资管理ER模型中,工资是实体集; 在项目管理ER模型中,职务是职工的属性,而在人事管理中,职务是一个实体集。 在本例中,可将工资和职务均调整为实体集。 第5章 建立数据模型 在集成全局ER模型时,一般采用两两集成的方法,即先将具有相同实体集的两个ER模型,以该相同实体集为基准进行集成,如果还有相同实体集的ER模型,再次集成,直到所有具有相同实体集的局部ER模型都被集成,得到初步的全局ER模型。 本例5.1中,以职工为公共实体集进行集成,其初步ER模型如图 5 1
21、6 所示。 第5章 建立数据模型 图 5 16 合并后的全局初步ER模型 拥有工资补贴基本工资保险实发工资职工性别年龄职工号分工部门部门号名称电话负责人任职任职日期代号名称津贴面积参加项目项目号名称起始鉴定日期起始日期姓名工资号职称职务m1nn1mn1第5章 建立数据模型 3. 消除冗余,优化全局ER模型 一个“好”的全局ER模型,除能反映用户功能需求外,还应该满足以下几个条件: (1) 实体联系尽可能少; (2) 实体集所含属性尽可能少; (3) 实体集间联系无冗余。 为了使实体集尽可能少,有时需要合并相关的实体集,如1 1联系的两个实体集、 具有相同码的实体集,可以合并。 第5章 建立数据
22、模型 有些实体集的属性可能是冗余的数据,所谓冗余数据是指重复存在或可由基本数据导出的数据。 如图 5 16 所示的工资中的实发工资即可由其他几个属性中计算得到,属于冗余数据。 冗余数据一方面浪费存储空间,另一方面又会破坏数据的完整性。 如某职工因为某种原因,增加了基本工资,用户除了修改基本工资一项外,还必须同时修改实发工资,否则数据就会前后不一致。 第5章 建立数据模型 但并不是所有的冗余数据都必须消除。 有时为了提高效率,不得不以冗余数据为代价。 如财务处频频地对每个职工的实发工资进行计算和统计,影响工作效率,可以让此冗余数据存在,但必须有数据的关联说明,并作为数据模型的完整性约束条件。 第
23、5章 建立数据模型 5.3 ER模型向关系模型的转化模型向关系模型的转化 ER模型是概念模型的表示。 要使计算机能处理模型中的信息,首先必须将它转化为具体的DBMS能处理的数据类型。 ER模型可以向现有的各种数据模型转换,而目前市场上的DBMS大部分是基于关系数据模型的,所以本节介绍ER模型向关系数据模型的转换方法。 第5章 建立数据模型 关系模型的逻辑结构是一系列关系模式(表)的集合。 将ER模型转化为关系模式主要需解决的问题是: 如何用关系表达实体集以及实体集间的联系。 下面从一个具体例子出发,说明ER模型向关系模型转换的一般规则和步骤。 例 5.2 将图 5 12 所示人事管理局部ER模
24、型向关系模型转换。 第5章 建立数据模型 (1) 将每一个实体集转换为一个关系模式,实体集的属性转换成关系的属性,实体集的码即对应关系的码。 本例中将生成如下三个关系模式: 职工(职工号,姓名,性别,年龄,工资) 部门(部门号,名称,电话,负责人) 职称职务(代号,名称,津贴,住房面积)第5章 建立数据模型 (2) 将每个联系集转换成关系模式。 对于给定的联系R,由它所转换的关系具有以下属性: 联系R单独的属性都转换为该关系的属性; 联系R涉及到的每个实体集的码属性(集)转换为该关系的属性。 转换后关系的码有以下几种情况: 若联系R为1 1联系,则每个相关实体的码均可作为关系的候选码; 若联系
25、R为1 n联系,则关系的码为n端实体的码; 若联系R为m n联系,则关系的码为相关实体码的集合。 第5章 建立数据模型 根据此规则,由联系转换来的关系模式为: 分工(职工号,部门号) 任职(职工号,代号,任职日期) (3) 根据具体情况,把具有相同码的多个关系模式合并成一个关系模式。 具有相同码的不同关系模式,从本质上描述的是同一实体集,因此可以合并。 合并后的关系包括两关系的所有属性,这样可以节省存储空间。 如本例中的职工关系和分工关系,可以合并为下面同一个关系模式: 第5章 建立数据模型 职工(职工号,姓名,性别,年龄,工资,部门号) 事实上,当将联系集R转换为关系模式时,只有当R为m n
26、联系时,需要重新建立新的关系模式; 当R为1 1、 1 n及Isa的联系时,可以不引进新的关系模式,只对与联系有关的实体集的关系模式作适当的修改。 请读者自行归纳其规律。 第5章 建立数据模型 5.4* 历史上有影响的数据模型历史上有影响的数据模型 在关系数据模型产生之前,数据库管理系统普遍使用的数据模型是层次和网状数据模型,它们又被称为非关系数据模型。 它们的数据结构和图的结构是相互对应的。 第5章 建立数据模型 在非关系数据模型中,概念模型中的实体型反映为记录型。 因此,图的结点表示为记录型(实体),结点之间的连线弧(或有向边)表示为记录型之间的联系。 每个记录型可包含若干个字段,对应于描
27、述实体的属性。 由于实际系统一般不允许直接表示多对多联系(多对多联系应转换为多个一对多联系),所以下面的讨论仅限于一对多(包括一对一)的情况。 通常,把表示“一”的记录型放在上方,称为父结点,或父记录; 表示“多”的记录型放在下方,称为子结点,或子记录。 如图 5 17 表示部门记录型和职工记录型之间的联系,是一个基本层次联系。 第5章 建立数据模型 图 5 17 一个基本层次联系 部门号部门名部门电话负责人职工号姓名性别年龄职称第5章 建立数据模型 5.4.1 层次模型 在现实世界中,有许多事物是按层次组织起来的,例如,一个学校有若干个系,一个系有若干个班级和教研室,一个班级有若干个学生,一
28、个教研室有若干教师。 其数据库模型如图 5 18 所示,可见层次模型是一棵倒挂的树。 图中系和班级、 班级和学生、 教研室和教师等都构成了双亲与子女关系,这是层次模型中最基本的数据关系。 层次模型有以下两个特点: 有且仅有一个结点无父结点,这样的结点称为根结点; 非根结点都有且仅有一个父结点。 第5章 建立数据模型 在层次模型中,一个结点可以有几个子结点,也可以没有子结点。 前一种情况下,这几个子结点称为兄弟结点,如图 5 18 中的班级和教研室; 后一种情况下,该结点称为叶结点,如图 5 18 中的学生和教师。 图 5 19 是图 5 18 数据模型的一个实例(一个值)。 该值是计算机系记录
29、值及其所有的后代记录值组成的一棵树。 第5章 建立数据模型 图 5 18 学校层次数据库模型 班级教研室学生教师系第5章 建立数据模型 图 5 19 学校层次数据库模型的一个实例 计算机系9801 班软件教研室硬件教研室张海青李红李四四王守江卢保成李守田罗成方清芳0101 班9901 班0001 班第5章 建立数据模型 5.4.2 网状模型 把层次模型的限制放开: 一个结点可以有一个以上的父结点,就得到网状模型。 网状模型还可以有的两个特点是: 可能有一个以上的结点无父结点; 结点与其父结点之间的联系可以不止一个。 第5章 建立数据模型 由定义可知,层次模型中子女结点与双亲结点的联系是唯一的,
30、而在网状模型中这种联系可以不唯一。 因此,在网状模型中,每一个联系都必须命名,每一个联系都有与之相关的双亲记录和子女记录。 图 5 20(a)、 (b)、 (c)给出了几个网状模型的例子。 第5章 建立数据模型 图 5 20 几个网状模型的例子专业 P社团 M学生 SP-SM-S工人机器使用维护专业学生系教师拥有分配教学学习(a)(b)(c)第5章 建立数据模型 网状数据模型中记录的概念类似于关系数据模型中关系的概念,如: 记录型 关系模式 记录 关系的元组 记录的字段 关系的属性 在网状模型中,用系(Set)表示一对多的联系,网状模型的有向图即是系的集合。 系由一个双亲记录型和一个或多个子女
31、记录型构成。 系中的双亲记录型称为首记录,子女记录型称为属记录。 系必需命名。 对应 对应 对应 第5章 建立数据模型 在非关系模型中,子女结点是不能脱离其父结点而独立存在的,任何一个记录只有按其路径查看时才有实际意义。 用户必须提供父结点才能查询子结点。 因此数据库开发人员必须熟悉所用模型的结构,在应用程序中才能明确指出查询的路径,才能实现查询。 这种要求,自然加重了用户的负担。 第5章 建立数据模型 层次模型曾在20世纪60年代末至70年代初流行过。 其中最有代表性的当推IBM公司的IMS。 但层次DBMS提供用户的数据模型和数据库语言比较低级,数据独立性也较差,所以在关系数据库之前,网状
32、DBMS要比层次DBMS用得普遍。 美国CODASYL(Conference on Data Systems Languages)委员会中的DBTG(Data Base Task Group)组在1971年提出了著名的DBTG报告, 对网状数据模型和语言进行了定义,在1978年和1981年又作了修改和补充。 第5章 建立数据模型 因此,网状数据模型又称为CODASYL模型或DBTG模型。 在20世纪70年代,曾经出现过大量的网状DBMS产品。比较著名的有Cullinet软件公司的IDMS,Honeywell公司的IDS,HP公司的IMAGE等。 有些网状DBMS目前还在运行。 所以说,在数据库
33、的发展史上,层次模型和网状模型曾起过重要的作用。 第5章 建立数据模型 5.5 数据模型与数据库系统的发展数据模型与数据库系统的发展 1. 第一代数据库系统 层次数据库系统和网状数据库系统称为第一代数据库系统。 层次模型是分层结构,网状模型是网状结构,它们的数据结构都可以用图来表示。 层次模型对应于一棵有根的定向树,网状模型对应于平面有向图。 它们统称为格式化数据模型。 实际上层次模型是网状模型的特例。 第5章 建立数据模型 层次模型和网状模型有许多共同的特征,如IMS和DBTG系统都支持三级模式结构; 都用存取路径来表示数据之间的联系; 用户对数据的存取,必须按照定义了的存取路径进行; 必须
34、清楚地了解数据在数据库中的位置; 对数据的操作是一次一个记录导航式地进行; 程序和数据都具有较高的物理独立性,但逻辑独立性较低。 第5章 建立数据模型 导航式的数据操纵语言的优点是存取效率高。 但程序员在编写应用程序时,不仅要知道“干什么”,而且要指出“怎么干”。 即程序员必须掌握数据库的逻辑和物理结构,在编写程序时,必须一步一步地“引导”程序,按照数据库中某一已定义的存取路径来访问数据。 所以网状和层次数据库又被称为“专家数据库”,不能被一般的用户所接受。 同时,这种导航式数据操纵语言,使得数据库应用程序的可移植性很差,数据的逻辑独立性也较差。 第5章 建立数据模型 2. 第二代数据库系统
35、支持关系数据模型的数据库系统是第二代数据库系统。 层次、 网状和关系数据模型是数据库诞生以来广泛应用的数据模型,一般称之为传统数据模型。 关系模型概念清晰、 简单,易于用户使用和理解; 有严格的理论基础关系代数。 关系模型中,只有单一的数据结构关系,实体和实体间的联系均用关系表示。 数据结构的单一性,带来了数据操作的简单化。 克服了非关系系统中由于信息表示方式的多样性带来的操作复杂性。 第5章 建立数据模型 支持非过程化语言(如SQL)操作数据。 关系数据库语言的高度非过程化,将用户从对数据库的导航式编程中解脱出来,降低了编程难度。 用户只要提出“做什么”,而无须指明“怎么做”,因此无需了解数
36、据库的存取路径(存取路径的选择由系统自动完成)。 这不但减轻了用户负担,而且有利于提高数据独立性。 第5章 建立数据模型 层次和网状数据模型中采用面向记录的操作方式,而在关系数据模型中,采用的是集合操作方式,操作的对象和结果都是元组的集合。 1970年,E.F.codd提出关系模型以后,关系数据库系统很快就在数据库领域中占据了相当重要的地位。 商用关系数据库系统,特别是微机型RDBMS的使用,已使数据库技术广泛应用于管理信息系统、 企业管理、 情报检索、 商业应用等各个领域。 第5章 建立数据模型 3. 第三代数据库系统 由于数据库技术在商业领域的巨大成功,使得数据库应用领域越来越广。 计算机
37、辅助设计/管理/集成制造(CAD/CAM/CIMS)、 联机分析处理(OLAP)、 办公自动化系统(OAS)、 地理信息系统(GIS)、 知识库系统、 电子数据交换和电子商务、 图像处理与模式识别、 实时仿真等。 这些应用有着与传统应用不同的行为特性和数据特性。 关系数据模型开始暴露出许多缺陷: 第5章 建立数据模型 (1) 不能存储和处理复杂对象。 对于具有复杂联系的实体集合,传统数据模型过于简单、表现力差、 语义不够丰富,不能表达聚集关系和抽象关系等。 (2) 仅支持有限的数据类型(整型、 字符串、 数值型等),不能存储和检索复杂的数据类型。 如抽象数据类型、 半结构或无结构的超长数据(图
38、形、 图像、 声音等)、 版本数据、 用户自定义复杂类型等。 第5章 建立数据模型 (3) 关系数据库语言(SQL)与程序设计语言之间的差距较大,不能进行无缝连接。 (4) 关系模型对应用环境的适应性差,缺乏灵活丰富的建模能力。 为此,人们提出并发展了许多新的数据模型。 模型的研究主要沿以下几个方向进行: (1) 对传统的关系数据模型进行扩充,引入构造器,使之能表达复杂数据类型,增强建模能力。 这种数据模型称为复杂数据模型。 第5章 建立数据模型 (2) 抛弃关系数据模型,发展全新的语义数据模型。 语义数据模型可表达复杂的结构和丰富的语义,具有全新的数据构造器和数据处理原语。 代表模型有: 语
39、义数据模型(SDM)、 ER模型、 函数数据模型(FDM)等。 (3) 结合语义数据模型和面向对象程序设计方法,提出了面向对象数据模型(Object Oriented Data Model,简称OODM)。 它是一种可扩充的数据模型,以对象(实体)为基础,支持面向对象的分析、 面向对象的设计和面向对象的编程。 有关OODM的概念,将在第 9 章中介绍。 第5章 建立数据模型 人们把支持新的数据模型的数据库系统,统称为第三代数据库系统。 无论是基于哪一种数据模型,体系结构如何,应用在何种领域,第三代数据库系统都应具有以下三个基本特点: (1) 第三代数据库系统必须保持或继承第二代数据库系统的技术。 (2) 第三代数据库系统应支持数据管理、 对象管理和知识管理。 (3) 第三代数据库系统应该对其他系统开放。 docin/sanshengshiyuandoc88/sanshenglu 更多精品资源请访问更多精品资源请访问