第三章 数据模型
本 章 导 航 数据模型 E-R数据模型 关系数据模型 其他数据模型
学 习 目 标 实体与实体之间的联系方式 三种数据模型及其比较 关系数据模型与模式 从E-R模型到关系数据模型的转换方法
3.1 数据模型概述 一、数据模型概念 建立数据模型:设计数据库系统时,一般先用图或表的形式抽象地反映数据彼此之间的关系。 常用的数据模型一般可分为两类: 语义数据模型:既概念模型,如实体_联系模型(E-R模型),面向对象模型等;是现实世界到信息世界的第一层抽象。 经典数据模型:如层次模型,网状模型,关系模型。用于机器世界,可在机器上实现。
全系统的数据库结构通常包括:数据结构、数据操作和完整性约束三部分内容。 1.数据模型应表现数据结构 数据结构:描述的是数据库数据的组成、特性及其相互间联系。 所有的数据模型都要能反映数据的情况及数据之间联系的情况。
2.数据模型要定义数据操作的内容 数据操作:指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。主要有检索和维护(包括录入、删除、修改)等两大类操作。
3.数据模型应描述数据的约束条件 数据的约束条件:指数据完整性规则的集合,它是给定数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其变化,以保证数据的完整性。
3.2 E-R数据模型 3.2.1 数据之间的联系 1、一对一联系(1:1) 3.2.1 数据之间的联系 1、一对一联系(1:1) 若对于实体集A中每一个实体,实体集B中至多只有 一个实体与之联系,反之对于实体集B中每一个实体, 实体集A中也至多只有一个实体与之联系。则称实体集A 与实体集B之间具有一对一联系,记为1:1。
班级 班长 王晓明 张珊 章程 李松 李霞 101班 102班 103班 104班 105班 班级 班长 1:1
2、一对多联系(1:N) 若对于实体集A中的每一个实体,实体集B中有n个 实体(n≥0)与之联系。而对于实体集B中的每一个 实体,实体集A中至多只有一个实体与之联系,则称 实体集A与实体集B有一对多的联系,记为1:N。
班级 学生 李霞 李敏 张珊 赵小敏 郑明明 章程 张超 张志超 101班 102班 103班 104班 105班 班级 学生 1:n
3、多对多联系(M:N) 若对于实体集A中的每一个实体,实体集B中有n 个实体(n≥0)与之联系,反过来对于实体B中的每 一个实体,实体集A中有m个实体(m≥0)与之联系, 则称实体集A与实体集B之间有多对多联系,记为M:N。
学生 课程 李霞 李敏 张珊 赵小敏 郑明明 章程 张超 张志超 计算机应用基础 数据库原理 C语言程序设计 数据结构 计算机网络 软件工程 操作系统 编译原理 学生 课程 m:n
3.2.2 实体-联系模型(Entity-Relationship Model) E-R模型是P.PS.Chen于1976年提出的一种 概念模型,用E-R图来描述一个系统中的数据及 其之间关系。
实体集:用长方形表示,在长方形框内写上实体名。 实体间联系:用菱形表示,菱形框内写上联系名。用无向边把菱形和有关实体相连接,在无向边旁标上联系的类型,如1或M或N。 实体或联系的属性:用椭圆形表示,椭圆内写上属性名,用无向边将它与一个相应实体相连。
【例】用E-R图来表示工厂仓库管理系统的概念模型。信息如下: 仓库:仓库号、仓库名、仓库容量。 零件:零件号、零件名、规格型号。 职工:职工号、职工名、工种。 其中,每个仓库有若干职工,每个职工只能在一个仓库工作;每个仓库可存放若干种零件,每种零件可存放在不同的仓库中。 作E-R图的步骤: 确定实体和实体的属性; 确定实体之间的联系及联系的类型; 给实体和联系加上属性
仓库名 仓库容量 仓库号 仓库 1 m 存放 工作 n n 职工 零件 职工号 工种 零件号 规格型号 职工名 零件名
【例】假设某公司在多个地区设有销售部经销本公司的各种产品,每种产品可由多个销售部销售;每个销售部聘用多名职工,且每名职工只属于一个销售部。销售部有部门名称、地区和电话等属性,产品有产品编码、品名和单价等属性,职工有职工号、姓名和性别等属性,每个销售部销售产品有数量属性。根据上述语义画出E-R图。
要注意的几个问题: 1、某些联系也具有属性。 2、 对于三个实体m:n:p的联系的老师、学生、课程间联系,可如图2.3所示描述。
3、E-R图可以表现一个实体内部-部分成员和另一部分成员间的联系,称为自回路。
4、E-R图可以表现二个实体集间多类联系。 例如: 一个单位中职工和工作的关系,一个职工可承担多项工作,一个工作一般有多人承担,这种工作关系是多对多的关系。 另一方面,有一些职工对一些工作是主要责任人,一个职工可对多项工作负责,但一项工作只有一个责任人,它们之间这种负责关系为1对多联系,可用图2.5描述。
3.3 关系数据模型 3.3.1 关系数据模型基本概念 用二维表格数据(即集合论中的关系)来表示实体和实体间联系的模型叫关系数据模型。 3.3.1 关系数据模型基本概念 用二维表格数据(即集合论中的关系)来表示实体和实体间联系的模型叫关系数据模型。 Oracle、DB2、Informix、Sybase、SQL Server、Access、Visual FoxPro全都是关系数据库管理系统。
关系模型中的术语: 关系:用二维表表示,二维表由多列和多行组成。 属性:每列为一个属性,每列的标识称为属性名, 在关系数据库中称为数据项或字段。 元组:表中每一行称为一个,描述一个具体实体, 在关系数据库中称为记录。元组的集合构成表。
关系数据模型:由多个关系表构成。 每个关系表示法(关系模式): 关系名(属性1,属性2,……属性n) 例如:学生(学号,姓名,性别,出生年月,专 业,班级,政治面貌,家庭住址,履历)。
主码(关键字):在一个关系中能唯一标识一个元组的属性或属性组。 域:属性的取值范围。一个域对应关系数据库中的表中的一个数据项的值的集合。域可以是整数、实数、字符串、日期、逻辑真假等。 分量:元组中一个属性值,对应关系数据库中一条具体记录的一个数据项的具体值。
关系模式:图书(借书证号,单位,姓名,性别,职称,地址) 字段 (数据项) 图书 域:{‘男’,’女’} 图书 借书证号 单位 姓名 性别 职称 地址 111 信息系 王维利 女 教授 1号楼424 112 财会系 李 立 男 副教授 2号楼316 113 经济系 张 三 讲师 3号楼105 114 周华发 1号楼316 115 赵正义 工程师 1号楼224 116 李 明 1号楼318 117 计算机系 李小峰 助教 1号楼214 118 许鹏飞 助工 1号楼216 119 刘大龙 120 国际贸易 李 雪 4号楼506 121 李 爽 4号楼510 122 王 纯 4号楼512 123 沈小霞 2号楼202 124 朱 海 2号楼210 125 马英明 2号楼212 借书证号 单位 姓名 性别 职称 地址 111 信息系 王维利 女 教授 1号楼424 112 财会系 李 立 男 副教授 2号楼316 113 经济系 张 三 讲师 3号楼105 114 周华发 1号楼316 115 赵正义 工程师 1号楼224 116 李 明 1号楼318 117 计算机系 李小峰 助教 1号楼214 118 许鹏飞 助工 1号楼216 119 刘大龙 120 国际贸易 李 雪 4号楼506 121 李 爽 4号楼510 122 王 纯 4号楼512 123 沈小霞 2号楼202 124 朱 海 2号楼210 125 马英明 2号楼212 元组 关系模式:图书(借书证号,单位,姓名,性别,职称,地址) 分量
几点说明: 1、关系是元组的集合,元组在关系中的顺序不影响关系。 2、同一关系任意元组不允许全同。对于每一表,一般要选定或设计主码,用以区分不同元组。 3、关系的每一属性都是不可再细分的基本数据类型,这种特性称为原子性。 4、在一个表中属性排列顺序可以交换,不影响关系。 5、允许属性值为空值(null value),表示该属性值未知,空值不同于0,也不同于空格。
3.3.2 从E-R数据模型到关系数据模型 由E-R模型转化出关系模型,方法为: 每一个实体型(矩形):用一个关系表示,实体的属性就是关系的属性,实体的码就是关系的主码。 学生 学号 姓名 性别 出生日期 学生 (学号,姓名,性别,出生日期)
1.合并到R端关系模式中 2.合并到S端关系模式中 一对一的联系:通常情况下将该联系与任意一端实体对应的关系模式合并。在合并端的关系模式中加入对应端的主码和联系自身的属性。 如果两个实体的主码相同,可将原两实体合并为一个关系表示,关系属性由二个实体属性集合而成,如有的属性名相同,则应加以区分。 R r1 r2 r3 1.合并到R端关系模式中 R(r1,r2,r3) R(r1,r2,r3,s1,p) 1 S(s1,s2,s3) R-S p 2.合并到S端关系模式中 S s1 s3 1 R(r1,r2,r3) S(s1,s2,s3,r1,p) s2
R(r1,r2,r3) S(s1,s2,s3) S(s1,s2,s3,p) 一对多的联系:在原多方实体对应的关系中,添加一方实体的主码,多方实体主码是多方对应关系的主码。 R r1 r2 r3 R(r1,r2,r3) 1 S(s1,s2,s3) S(s1,s2,s3,p) R-S p s2 S s1 s3 n
R(r1,r2,r3) S(s1,s2,s3) R-S(r1,s1,p) 多对多的联系:转换为新关系,联系名为关系名,联系的属性加上相关两实体主码构成关系的属性集,相关两实体主码的集合是联系关系的主码。 R r1 r2 r3 R(r1,r2,r3) S(s1,s2,s3) m R-S(r1,s1,p) R-S p s2 S s1 s3 n
销售部(部门名称,地区,电话) 职工(职工号,姓名,性别,部门名称) 职工(职工号,姓名,性别) 产品(产品编码,品名,单价) 销售(部门名称,产品编码,数量)
M: N: P的联系:仿照多对多联系处理,联系转化为关系, 原三个相关实体的主码及联系自身的属性构成联系关系的属性。 自回路:区分一对多和多对多。对于多对多情况,先复制原 实体中主码及涉及的主要属性,改名后存另一个表,再仿照一 对多联系和多对多联系处理,联系转化为关系,原实体中主码 加上更名后原实体中主码作为联系的属性。
3.4 其他数据模型 3.4.1 网状数据模型 广义的网状模型十分简单,它以矩形代表实体集,实体间用箭头线表示联系,箭头线为两头带箭头的连线,箭头分单箭头与双箭头,单箭头代表一,双箭头代表多。
1971年美国数据系统语言会议(Conference of Data System Language)组织的下属机构数据库任务组织(DBTG)提出了DBTG网状数据模型,它包括两种基本构件,记录类型和系类型,前者描述实体,后者描述实体间联系。 记录类型:是具有相同结构的一组记录的框架,相当于一个二维表的表头结构,它允许组项和向量。 在依之而设计的DBTG网状数据库中每一记录对应一个实体,实体按实体集分区域存放。
DBTG网状数据模型构成规则可大体归纳为: 1、一个记录类型可以参与多个系的组成,可以是多个系的系主记录型,也可为多个系的成员记录型。 2、任意两个记录类型间可以定义多个系类型。 3、系主记录型与成员记录型之间只能是一对多联系 4、在任何系中,一个成员记录值最多只能对应于一个系主记录值,即它不能属于同一系类型的不同系值。 5、允许一个系只有成员记录型而无系主记录型,这样的系称为奇异系,视“系统”为其系主,只有一个系值。 6、不允许一个记录型既是系主记录型又是成员记录型,这样的结构称为自回路。
层次数据模型 层次数据模型用“树”结构表示实体集之间的关系。 它以实体集(用矩形框表示)为结点,父结点与子结点间数据联系均为一对多联系。有且仅有一个结点无父结点称为根结点,
3.4.2 层次数据模型 层次数据模型用“树”结构表示实体集之间的关系。 3.4.2 层次数据模型 层次数据模型用“树”结构表示实体集之间的关系。 它以实体集(用矩形框表示)为结点,父结点与子结点间数据联系均为一对多联系。有且仅有一个结点无父结点称为根结点。
习题 1、为某个出版单位设计一个E-R图。假设在一个出版社要出版很多图书,每本图书只能由一个出版社出版。每本图书可以有多名作者,每个作者也可能参与多本书的编写工作。根据你所了解的出版社工作情况为每个实体设计属性并分析实体间的联系。 2、在上题的基础上建立对应的关系数据模型,并分析在转换过程中要注意哪些问题。