第2章数据库系统的数据模型第二章数据库系统的数据模型本章主要内容数据库是个具有一定数据结构的数据集合,这个结构是根据现实世界中事物之间的联系来确定的。
在数据库系统中不仅要存储和管理数据本身,还要保存和处理数据之间的联系,这种数据之间联系与就是实体之间的联系。
研究如何表示和处理这种联系是数据库系统的一个核心问题,用以表示实体以及实体之间联系的数据库的数据结构称为数据模型。
本章将着重介绍一下概念模型、层次模型、网状模型、关系模型、面向对象模型等数据库系统的数据模型的基本概念和设计方法,为后面的数据库设计打下基础。
2.1 数据模型概述数据模型(Data Model)是对现实世界数据特征的抽象,是用来描述数据的一组概念和定义。
为了把现实世界的具体事物抽象、组织为某一DBMS现实世界支持的数据模型,通常首先把现实世界中的客观对象抽象认识抽象为概念模型,然后把概念模型转换为某一DBMS支持的数据模型,这一过程如图2,1所示。
概念数据模型:信息世界数据模型按不同的应用层次可划分为两类:转换 (1)概念数据模型(又称概念模型)是一种面向客观世界、面向用户的模型,独立于计算逻辑数据模型:DBMS支持的数据模型机系统的数据模型,完全不涉及信息在计算机中的表示,只是用来描述某个特定组织所关心的信息结构。
概念模型是按用户的观点对数据建模,是用户和数据设计人员之间进行交流的工具,主要是用于数据库设计。
例如E,R模型、扩充E,R模型属于这一类模型。
(2)逻辑数据模型(又称数据模型)是一种直接面向数据库系统的模型,主要用于DBMS的实现。
例如层次模型、网状模型、关系模型均属于这一类模型。
这类模型有严格的形式化定义,以便于在计算机系统中实现。
2.1.1 数据模型的基本组成数据模型是现实世界中的事物及其间联系的一种抽象表示,是一种形式化描述数据、数据间联系以及有关语义约束规则的方法。
通常一个数据库的数据模型由数据结构、数据操作和数据的约束条件三个部分组成。
(1)数据结构是指对实体类型和实现间联系的表达实现。
它是数据模型最基本的组织部分,规定了数据模型的静态特性。
在数据库系统中通常按照数据结构的类型来命名数据模型,例如,采用层次型数据结构、网状型数据结构、关系型数据结构的数据模型分别称为层次模型、网状模型和关系模型。
(2)数据操作是指对数据库进行的检索和更新(包括插入、删除和修改)两类操作。
它规定了数据模型的动态操作。
(3)数据的约束条件数据的约束条件是一组完整性规则的集合,它定义了给定数据模型中数据及其联系应具1有的制约和依赖规则。
以确保数据库中数据的正确性、有效性和相容性。
2.1.2 数据模型的发展20世纪60年代后期,在文件系统基础上发展起来的层次模型、网状模型和关系模型等传统数据模型,这些传统数据模型都是在记录的基础上定义了各自数据的基本结构、操作和完整性约束条件以及不同类型记录间的联系。
传统数据模型在数据库产生以来得到了广泛的应用,但随着数据库应用系统使用范围的不断扩大,传统数据模型中这种过于面向机器实现、模拟现实世界的能力不足、语义贫乏等弱点日益突出,导致抽象级别更高、表达能力更强的新型数据模型即非传统数据模型的发展。
例如20世纪70年代后期产生的E,R数据模型是一种概念模型,它提供了丰富的语义和直接模拟现实世界的能力,且具有直观、自然、易于用户理解等优点。
以及CAD/CAM、CASE等专用概念数据模型的产生。
由于数据库新的应用不断扩大,对数据模型的要求也越来越多。
附着新一代数据库研究工作的不断深入,20世纪80年代以来又相继推出面向对象数据模型、基于逻辑的数据模型等新的模型。
下面几节我们将着重对概念模型、传统数据模型、面向对象数据模型进行讨论。
2.2 E,R数据模型概念模型是从现实世界到数据世界的一个中间层次,是数据库设计人员进行数据库设计的重要工具。
长期以来在数据库设计中广泛使用的概念模型当属是E,R数据模型。
2.2.1 基本概念E,R数据模型(即Entity-Relationship data model,实体,联系数据模型)是P. Chen(Peter Pin-Shan Chen)于1976年提出的一种语义数据模型。
E-R数据模型不同于传统数据模型,它不是面向实现,而是面向现实世界。
设计E-R数据模型的目标是有效和自然地模拟现实世界,而不是它在机器中如何实现,因此E-R数据模型只应包含那些对描述现实世界有普遍意义的抽象概念。
下面介绍一下E-R数据模型的3个抽象概念。
1)实体(Entity)实体是客观存在的且可以区别的事物。
现实世界是由各种各位的实体组成。
实体可以是有生命的,也可以是无生命的;可以是具体的,也可以是抽象的;可以是物理上存在的,也可以是概念性的。
例如学生、教师、文化艺术、梦、兴趣等等都是实体。
所以凡是可以互相区别又可以被人们识别的事、物、概念等统统抽象为实体。
在数据库设计中,人们常常关心的是具有相同性质的实体的集合。
这种具有相同性质的一类实体的集合称为实体集。
例如全校学生的集合组成学生实体集。
实体集中的各个实体是借助实体标识符(称关键字)加以区别的。
在E,R数据模型中,也有型与值之分;实体集作为型来定义,而每一个实体是它的实例或值。
2)联系(Relationship)实体之间会有各种关系,例如学生实体与课程实体之间可能有选课关系,教师实体与学生实体之间可能有讲授关系等。
这种实体与实体间的关系抽象为联系。
根据参与联系的实体个数n的不同,通常将联系分为如下几类:(1)二元联系只有两个实体参与的联系称为二元联系,这是现实世界大量存在的联系。
在二元联系中,E,R数据模型又把联系区分为一对一(1:1)、一对多(1:n)、和多对多(m:n)三种。
, 一对一(1:1)联系若两个实体集中E、E中的每一个实体至多和另一个实体集中的一个实体有联系,则122称E和E是一对一的联系,记为1:1。
12例如,学校实体集与校长实体集间的联系是一对一联系。
, 一对多(1:n)联系设两个实体集E、E,若E中每一个实体与E中任意个实体(包括零个)相联系,而1212E中每个实体至多和E中一个实体有联系,则称E和E是一对多的联系,记为1:n。
2112例如,系实体集与教师实体集、班长与同学之间是一对多联系。
, 多对多(m:n)联系设两个实体集E、E,若E中每一个实体都和另一个实体集中任意个实体(包括零个)121有联系,则称E和E是多对多的联系,记为m:n。
12例如,教师实体集T与课程实体集C间是一对多联系。
因为教师实体集T中的某个教师可能讲授一门课程或几门课程,也可能不讲课;因为课程实体集C中的一门课程可能由一个教师或几个教师讲授。
再如:学生与课程、供应商与商品等m:n 都是m:n联系。
1:1联系是1:n联系的特例,而1:n联系又是m:n联系1:n 的特例。
它们之间是包含关系。
如图2,2所示。
1:1 (2)多元联系在E,R数据模型中,二元联系这种表示方法还可推广到多元联系,即参与联系的实体个数n?3。
例如,三元联系也可区分1:1:1、1:1:p、1:n:p、m:n:p等联系。
(3)自反联系表示同一个实体集两部分实体之间的联系,是一种特殊的二元联系。
这两部分实体之间的联系也可以区分为1:1、1:n和m:n三种。
例如,在“人”这个实体集中存在夫妻之间的1:1联系;教师实体集中为了描述领导与被领导关系,可用1:n 联系描述;在课程实体集中存在一门课程与另外一门或几门课程之间的预选课联系。
3)属性实体或联系所具有的特征称为属性。
实体是由特征来表征和区分的,通常一个实体可以由多个属性来描述。
例如,学生具有姓名、学号等属性。
, 一个实体可以有若干个属性,但在数据库设计中通常只选择部分数据管理需要的属性。
, 属性往往是来可再细分的原子属性,如姓名、性别等。
, 属性有型和值的区别。
例如,学生实体中的学号、姓名等属性名是属性型,而“021231142”、“李定”等具体数据称为属性值。
, 每个属性值都有一定的变化范围,通常称属性取值的变化范围为属性值的域。
例如,性别属性域是男、女,年龄属性域是1~200。
, 能唯一标识实体集中某一实体的属性或属性组称为实体集的标识关键字或称关键字。
2.2.2 E,R图E,R图是E,R数据模型的图形表示法,是一种直观表示现实世界的有力工具,目前E-R图已用于数据库的概念设计。
31)E,R图的表示方法用矩形框表示实体集,矩形框中是实体集名。
实体集名用菱形表示联系,菱形框中是联系名。
与其相关的实体集之间用无向边连接,连线边上标明联系类型。
联系用椭圆表示属性,并用无向边连向与其相关的实体集或联系。
属性在E,R图,为了突出实体集之间的联系,通常采用略去实体集或联系的属性的E,R简图来表示。
上述提到的几种联系的E,R简图如图2,3、图2,4所示。
校长系部教师 1 1 1 m 1 m人教师夫妻课程负责领导聘任教学预选1 n n 1 n n 学校教师学生图2,3 二元联系E,R简图图2,4 自反联系E,R简图2)E,R图的构成规则(1)画出实体集及它们之间的联系, 如果实体集A中实体之间有联系A,A,则可根据联系类型的不同,分别用图2,5的(a)、(b)、(c)表示。
m 1 1 A A-A A A-A A A-An n 1(a)A,A联系类型为1:1 (b)A,A联系类型为1:n (c)A,A联系类型为m:n图2,5 实体集A中实体之间的联系, 如果实体集A和实体集B之间有联系A,B,则可根据联系类型的不同,分别用图2,6的(a)、(b)、(c)表示。
A A A 1 1 mA-B A-B A-B1 n nB B B(a)A,B联系类型为1:1 (b)A,B联系类型为1:n (c)A,B联系类型为m:n图2,6 实体集A和实体集B之间的联系, 如果三个上实体集之间有联系,则可根据其联系类型画出E,R图。
为简单起见,这里以三个实体集A、B、C及其联系A-B-C为例,根据它们之间联系类型的不同分别用图2,7的(a)、(b)、(c)表示。
4A A A A1 m 1 1A-B-C A-B-C A-B-C A-B-C1 1 n p 1 n p pB C B C B B C C(a)A-B-C联系类型为1:1:1 (b)A-B-C联系类型为1:1:p (c)A-B-C联系类型为1:n:p (d)A-B-C联系类型为m:n:p图2,7 实体集A、实体集B和实体集C之间的联系(2)画出实体集及联系的属性用无向边把属性框连向与其相关的实体集或联系。
在E,R图中有些属性连线上加有短垂线,表示该属性是实体标识关键字或标识关键字的一部分。
例如学校和教师实体集间存在聘任联系,联系有“聘任日期”属性,则一个描述学校和教师实体集及其联系的E,R图如图2,8所示。