第二章 数据模型
数据模型概述
• 模型是对现实世界的抽象。
• 在数据库中用数据模型这个工具来抽象、
表示和处理现实世界中的数据和信息。
• 数据描述的三种范畴
– 现实世界
– 信息世界
– 机器世界
两类抽象层次的数据模型
• 数据模型分为两类(分属两个不同的层次)
(1) 概念模型 也称信息模型,它是按用户的观点来
对数据和信息建模,用于数据库设计。
(2) 结构数据模型
– 逻辑模型主要包括网状模型、层次模型、关系模型、
面向对象模型等,按计算机系统的观点对数据建模,
用于DBMS实现。
– 物理模型是对数据最底层的抽象,描述数据在系统内
部的表示方式和存取方法,在磁盘或磁带上的存储方
式和存取方法。
DBMS支持的数据模型
概念模型
认识
抽象
信息世界
机器世界
现实世界中客观对象的抽象过程
现实世界
现实世界 概念模型
数据库设计人员完成
逻辑模型 物理模型
由DBMS完成
概念模型 逻辑模型
数据库设计人员完成
概念模型(信息模型)
• 是独立于计算机系统的数据模型。
• 不涉及信息在计算机中的表示,只用来描
述某个特定组织所关心的信息结构,是对
现实世界的第一层抽象。
• 概念模型是按用户的观点对数据建模,强
调其语义表达能力,是用户和DB设计人员
之间进行交流的语言和工具。
信息世界中的基本概念
(1) 实体(Entity)
– 客观存在并可相互区别的事物称为实体。
(2) 属性(Attribute)
– 实体所具有的某一特性称为属性。
(3) 码(Key)
– 唯一标识实体的属性集称为码。
(4) 域(Domain)
– 属性的取值范围称为该属性的域。
(5) 实体型(Entity Type)
– 用实体名及其属性名集合来抽象和刻画
– 同类实体称为实体型
(6) 实体集(Entity Set)
– 同型实体的集合称为实体集
某公司数据库需求说明:
1.公司分若干部门,每个部门有一个名字,一个
编号和一个管理该部门的雇员(经理)并记录
下该雇员开始管理该部门的日期,一个部门可
以分散在几个地点。
2.一个部门控制若干项目,每个项目有一个名字,
一个编号和一个单独的地点。
3.保存每个雇员的名字、社会保险号、地址、工
资、性别和出生日期。一个雇员隶属一个部门
但可在由不同部门控制的几个项目中工作,要
求记录雇员每周在各个项目中工作的时数,并
指明其上司。
4.保存雇员的所有子女的信息,包括姓名、性别、
出生日期及与雇员之间的关系。
1.公司分若干部门,每个部门有一个名字,一个编号和
一个管理该部门的雇员(经理)并记录下该雇员开始
管理该部门的日期,一个部门可以分散在几个地点。
2.一个部门控制若干项目,每个项目有一个名字,一个
编号和一个单独的地点。
3.保存每个雇员的名字、社会保险号、地址、工资、性
别和出生日期。一个雇员隶属一个部门但可在由不同
部门控制的几个项目中工作,要求记录雇员每周在各
个项目中工作的时数。
4.保存雇员的所有子女的信息,包括姓名、性别、出生
日期及与雇员之间的关系。
(7) 联系(Relationship)
– 现实世界中事物内部以及事物之间的联系在信
息世界中反映为实体内部的联系和实体之间的
联系
两类:
• 实体型内部的联系,即组成实体型的属性之间的联
系.
• 实体型之间的联系, 不同实体型内的各个实体之间,
同一实体型内各个实体之间
概念模型的表示方法
• 概念模型的表示方法很多,但常用的是实
体-联系方法
• (Entity-Relationship Approach)
– E-R方法建立的模型为E-R模型
– 特点:直观、自然、语义表现丰富,易于理解,
又易于向各种数据模型转换。
E-R图
。矩形表示实体型
。椭圆表示属性
。菱形表示联系
。无向边表示实体型
与相关属性或联系
的相连。
实体名
属性名
联系名
联系的种类
1.两类实体型之间的联系
a.一对一联系(1:1)
例:宿舍里: 学生------床位
1 1
A B
学生 床位占用
1 1
E-R图:
b.一对多联系(1:n)
例: 宿舍 学生
1 n
宿舍 学生居住
1 n
A B
E-R图:
c.多对多联系(m:n)
例:学生 教室
m n
A B
学生 教室占用
m n
E-R图:
d. 多重联系
例: 工人-------设备
工人 设备
使用
n 1(m)
维修
m n
E-R图:
2. 多个实体型间的联系
例:供应商----零件----项目
语义:一个供应商可为多个项目供应多种零件
一个项目可使用多个供应商供应的多种零
件.
一种零件可由多个供应商提供给多个项目.
项目
供应商
零件
供应m
k
n
3. 实体内部的联系
• 例1:语义:某一职工领导若干职工,而一个职
工仅被另一个职工领导.
例2:表示一种零件材料单,一种零件由其它多
种零件组成,一种零件是其它零件的组成成
分.
职工
领导
零件
组成
1 n m n
1.公司分若干部门,每个部门有一个名字,一个编号和
一个管理该部门的雇员(经理)并记录下该雇员开始
管理该部门的日期,一个部门可以分散在几个地点。
2.一个部门控制若干项目,每个项目有一个名字,一个
编号和一个单独的地点。
3.保存每个雇员的名字、社会保险号、地址、工资、性
别和出生日期。一个雇员隶属一个部门但可在由不同
部门控制的几个项目中工作,要求记录雇员每周在各
个项目中工作的时数。
4.保存雇员的所有子女的信息,包括姓名、性别、出生
日期及与雇员之间的关系。
部门
项目
雇员 子女
参与
受控
抚养
隶属
领导
1
N
1 N
1 N
M
N
1 N
名字 编号 地点 经理
管理开始日期
姓名 性别 出生日期 关系
名字 编号 位置 负责部门
某公司数据库E-R图
雇员
?
部门
项目
雇员 子女
参与
受控
抚养
管理
领导
1
N
1 N
1 N
M
N
1 N
名字 编号 地点
管理开始
日期
姓名 性别 出生日期 关系
名字编号 地点
某公司数据库E-R图
周工作时间
隶属
设计E-R模型的几点说明
1)定义与当前和可预见的将来应用有关的实
体,属性,联系
2)实体有多方面的性质,属性没有.
3)实体的属性一定是单值的,若为多值则定义
为另一实体,并建立联系.
4)联系也可以有属性.
结构数据模型
结构数据模型的组成要素
• 指出:一个基本数据模型实质上是
一组向用户提供的规则.这组规则规定数据
结构如何组织以及相应地允许进行何种操
作.
– 数据结构
– 数据操作
– 数据的约束条件
数据结构
• 数据结构用于描述系统的静态特性,研究
与数据类型、内容、性质有关的对象,例
如关系模型中的域、属性、关系等。
数据操作
• 对数据库中各种对象(型)的实例(值)
允许执行的操作的集合,包括操作及有关
部门的操作规则。
• DB中主要的操作有查询和更新两大类。
• 数据操作规定了数据模型的动态特性。
数据的约束条件
• 一组完整性规则的集合。
• 完整性规则是给定的数据模型中数据及其
联系所具有的制约和储存规则,用以限定
符合数据模型的数据库状态以及状态的变
化。
常用数据模型
• 非关系模型
– 层次模型(Hierarchical Model)
– 网状模型(Network Model )
• 关系模型(Relational Model)
• 面向对象模型(Object Oriented Model)
• 对象关系模型(Object Relation Model)
1. 层次数据模型
满足下面两个条件的基本层次联系的集合为
层次模型。
1.有且只有一个结点没有双亲
结点,这个结点称为根结点
2. 根以外的其它结点
有且只有一个双亲结点
R1
R2
R4 R6
R3
R5
层次数据模型
E-R模型:
学生
有
系
专业 教师
课程
有 有
开设
1
n
1
n
1
n
1
n
选修m n
教师号 姓名 职称
系号 系名 负责人
课号 课名 学时
专业号 专业名
学号姓名年龄性别
系
专业 教师
学生 课程
层次模型:
层次模型的优缺点
• 优点
– 层次数据模型简单,对具有一对多的层次关系
的部门描述自然、直观,容易理解
– 性能优于关系模型,不低于网状模型
– 层次数据模型提供了良好的完整性支持
• 缺点
– 多对多联系表示不自然
– 对插入和删除操作的限制多
– 查询子女结点必须通过双亲结点
– 层次命令趋于程序化
典型的层次数据库系统
• IMS数据库管理系统
– 第一个大型商用DBMS
– 1968年推出
– IBM公司研制
2. 网状数据模型
满足下面两个条件的基本层次联系的集合为
网状模型。
1. 允许一个以上的结点无双亲;
2. 一个结点可以有多于一个的双亲。
R1 R2
R3 R4
R6
R5
L1
L2 L3
L4L5
L6
网状数据模型
学生宿舍
学生 教研室
系
教师
网状模型的优缺点
• 优点
– 能够更为直接地描述现实世界,如一个结点可
以有多个双亲
– 具有良好的性能,存取效率较高
• 缺点
– 结构比较复杂,而且随着应用环境的扩大,数
据库的结构就变得越来越复杂,不利于最终用
户掌握
– DDL、DML语言复杂,用户不容易使用
典型的网状数据库系统
• DBTG系统,亦称CODASYL系统
– 由DBTG提出的一个系统方案
– 奠定了数据库系统的基本概念、方法和技术
– 70年代推出
• 实际系统
– Cullinet Software Inc.公司的 IDMS
– Univac公司的 DMS1100
– Honeywell公司的IDS/2
– HP公司的IMAGE
关系模型
• 最重要的一种数据模型。也是目前主要采
用的数据模型
• 1970年由美国IBM公司San Jose研究室的
研究员提出
• 在用户观点下,关系模型中数据的逻辑结
构是一张二维表,它由行和列组成。
一些基本术语
关系:关系就是二维表,它满足如下性质:
–关系表中的每一列都是不可再分的基本属性。
–表中各属性不能重名。
–表中的行、列次序并不重要。
元组:表中的每一行称作是一个元组,它
相当于一个记录值。
属性:表中的每一列是一个属性值的集合,
列可以命名,称为属性名。
域:属性的取值范围。
主码:表中的某个属性或者属性组合,其值
能唯一的标识一个元组。
分量:元组中的一个属性值。
关系模式:对关系的描述,
一般表示为:关系名(属性1,属性2,属性3,
…..)
特点:
(1)描述的一致性.用关系描述实体和联系.
(2)可以直接表示多对多的联系.
(3)关系必须是规范化的,即每个表中的每个分
量都是不可分的数据.
(4)关系模型是建立在数学概念基础上的,有较
强的理论根据.
关系模型的优缺点
优点:
(1)与非关系模型不同,它有较强的数学理论根据。
(2)数据结构简单、清晰,用户易懂易用,不仅用关系描
述实体,而且用关系描述实体间的联系。
(3)关系模型的存取路径对用户透明,从而具有更高的数
据独立性、更好的安全保密性,也简化了程序员的工作和
数据库建立和开发的工作。
缺点:
由于存取路径对用户透明,查询效率往往不如非关系模型,
因此,为了提高性能,必须对用户的查询表示进行优化,
增加了开发数据库管理系统的负担。
例:
学生
课程
选修
m
n
学号 姓名 年龄 性别 所在系
9901 张力 20 女 计算机
9902 王明 19 男 计算机
学生
课号 课名 学分 学时
J010 DB 6 64
J013 AI 5 54
课程
学号 课号 成绩
9901 J010 86
9901 J013 78
9902 J010 91
9902 J013 82
选修
关系数据库由来(1)
• 系统而严格地提出关系模型的是美国IBM公
司的
– 1923年8月19日生于英格兰中部,
当过兵,教过书,在IBM做研究
– 1948年在牛津大学获数学学士和硕士学位,之后
到美国求职,13年后重返大学,在米歇根大学进
修计算机与通信,1965年获博士学位
– 本性是个数学家,他最大的愿望是为数
据库建立一个优美的数学模型
– 关系数据库之父
关系数据库由来(2)
• , “A Relational Model of Data for
Large Shared Data Banks”,
《Communication of the ACM》,
1970,65 pages
– ACM(Association for Computing Machinery,
国际计算机组织) 在1983年把该文列为从1958
年以来四分之一世纪中具有里程碑式意义的25
篇论文之一。
– 关系模型简单明了。
关系数据库由来(3)
• 两个开创性的原型系统
– 1974, IBM “System R” => SQL
– UC Berkely, “Ingres” => QUEL
– 两系统双双获得ACM的1988年“软件系统奖”
关系数据库由来(4)
• IBM的故事
– 1977, IBM完成System R 原型
– 1983,IBM推出第一个关系数据库产品
(DB2)
– IBM产品化步伐缓慢的原因
• IBM重视信誉,重视质量,尽量减少故障
• IBM是个大公司,官僚体系庞大
• IBM内部已经有层次数据库产品,相关人员不积极,
甚至反对
• 错误的技术路线:Project Eagle(1980), 基于
IMS建立关系数据库
关系数据库由来(5)
• Oracle的故事
– Oracle前身叫SDL, 由Larry Ellison和另两个编
程人员在1977创办
– 开发自己的拳头产品,在市场上大量销售
• 开发关系数据库产品
– 做事方法三个要点
• 第一,不做研究,只做产品开发
• 第二,以尽快推出产品为第一目标
• 第三,产品要能够在销量较大的平台上运行
关系数据库由来(7)
• 1970年以后,E. F. Codd继续完善和发展关系理
论
– 1972,提出关系代数和关系演算,定义了关系的并、
交、差、投影、选择、连接的各种基本运算
– 创办了一个研究所:The Relational Institute和一个公
司Codd & Associations
– 1990年,出版了专著《The Relational Model for
Database Management: Version 2》
– 1981年11月9日在洛杉矶在召开的ACM年会上,获图
灵奖,演讲题目为“Relational Database: A Practical
Foundation for Productivity”
数据库系统的三级模式和二级
映像
• 模式(Schema)和实例(Instance)
– 模式是数据库中全体数据的逻辑结构和特征的
描述,它仅仅涉及类型的描述,不涉及具体的
值
– 模式的一个具体值称为模式的一个实例
• 学生表 (学号,姓名,年龄)
• 课程表 (课程号,课程名,学
分)
• 选课表 (学号,课程号,成绩)
模式
两个实例
数据库系统的三级模式结构
应用程序A 应用程序B 应用程序C
外模式 外模式
内模式
模式
外模式/模式
映射
模式/内模式
映射
DBMS
用户 用户 用户
模式(概念模式,逻辑模式)
• 数据库中全体数据的逻辑结构和特征的描
述
– 数据记录由哪些数据项构成
– 数据项的名字、类型、取值范围
– 数据之间的联系、数据的完整性等
• 不涉及数据物理存储的细节和硬件环境
• 一个数据库只有一个概念模式
• 通过模式DDL进行定义
外模式(子模式、用户模式)
• 单个用户所看到的局部数据的逻辑结构和
特征的描述
• 用户与数据库系统的数据接口,对于用户
而言,外模式就是数据库
• 建立在概念模式之上,同一模式上可有多
个不同的外模式,因为不同的用户看待数
据的方式、对数据的保密等要求不同
• 例:模式中的数据项是“出生日期”,而外模式
项用户提供“年龄”的信息.
内模式(存储模式)
• 数据物理结构和存储方式的描述
– 记录的存储方式:顺序存储、按B树组织还是
散列存储?
– 索引按什么方式组织:排序、散列?
– 数据是否加密?是否压缩存储?
• 一个DB只有一个内模式。
• 是DBMS管理的最低层,它是物理存储设备
上存储数据时的物理抽象。
外模式/模式映象
• 定义了外模式与概念模式之间的对应关系
– 属性名称可能不同
– 外模式中的属性可能由模式中的多个属性运算
而得
• 当概念模式发生改变时,只要修改外模式/
模式映象,可保持外模式不变,从而保持
用户应用程序不变,保证了数据与用户程
序的逻辑独立性——数据的逻辑独立性。
模式/内模式映象
• 定义了概念模式与内模式之间的对应关系
– 概念模式中的逻辑记录和字段在内部如何表示
• 当数据库的内部存储结构发生改变时,只
要修改模式/内模式映象,可保持概念模式
不变,从而保持外模式以及用户程序的不
变,保证了数据与程序的物理独立性——
数据的物理独立性。
界面
外模式
模式
内模式
应用系统
数据库 OS
数据库管理系统
用户
应用
程序
员
DBA
系统
各种人员的数据格式
DBMS读取一条记录时发生的事:
• 用户程序向DBMS发出读一条记录的指令,这时用
户程序要给出外部文件名和记录的关键字值;
• DBMS分析所接到的指令,访问对应的外部模式;
• DBMS完成外部模式到概念模式的转换,决定访问
哪个(些)概念文件;
• 接着由DBMS完成概念模式到存储模式的转换,并
决定访问哪个(些)存储文件;
• DBMS调用存取方法,通过操作系统将读取的记录
送到系统缓冲区;
• 用户程序从系统缓冲区得到所需记录和DBMS返回
的状态信息;
• 用户程序在工作区中使用所得到的记录。