一. 概述
数据库结构的基础是数据模型
数据模型:是一个描述数据结构、数据操作以及数据约束的数学形式体系(即概念及其符号表示系统)
由于计算机不可能直接处理现实世界中的具体事物,所以人们必须事先把具体事物转换为计算机能够处理的数据,
也就是把现实世界中具体的人、物、活动、概念、等用数据模型这个工具来进行抽象、表示和处理
二. 数据模型的分层
数据模型应满足3方面的要求:
- 能够比较真实的模拟现实世界
- 容易被人所理解
- 便于在计算机上实现
(1). 概念模型(现实世界的第一层抽象)
-
定义:概念层次的数据模型
-
特点:
- 语义表达能力强
- 易于理解
- 独立于任何DBMS
- 容易向DBMS所支持的逻辑数据模型转换
-
常用的概念模型
1. 实体联系模型(entry-relationship model,E-R模型)E-R模型对现实世界的认识:现实世界是由一组称作实体的基本对象以及这些对象间的联系构成
-
面向对象模型(object oriented model,OO模型)
是面向对象观点来描述现实世界实体(对象)的逻辑组织、对象间限制、联系等的模型 OO模型可以看成是E-R模型增加了封装、方法(函数)和对象标识符等概念后扩展
(2). 逻辑模型(现实世界第二层抽象)
-
定义:逻辑层是数据抽象的中间层,用于描述数据库数据的整体逻辑结构
是数据库管理系统看到的现实世界,是按计算机系统的观点对数据建模,主要用于DBMS的实现
-
不同的DBMS提供不同的逻辑数据模型
1. 传统的逻辑数据模型:
(1). 层次模型(hierarchical model)
层次模型用树形结构来表示各类实体以及实体间的联系(实体用记录表示,实体间的联系用链接(指针)来表示)
层次模型应满足如下条件:
1. 有且仅有一个结点没有双亲结点,这个结点称为根结点
2. 根以外的其他结点有且只有一个双亲结点
基本特点:
任何一个给定的记录值只有按其路径查看时,才能获取它的全部意义,没有一个孩子记录值能够脱离双亲记录值而独立存在
优点:
1. 数据结构比较简单清晰
2. 查询效率高
3. 提供了良好的数据完整性支持
缺点:
1. 现实世界中很多联系是非层次的,想要解决编写就非常复杂
2. 查询孩子结点必须通过双亲结点
3. 由于结构严密,层次命令趋于程序化
(2). 网状模型(network model)
网状模型满足以下两个条件:
1. 允许一个以上的结点无双亲
2. 一个节点可以有多个双亲
优点:
1. 能够更为直接的描述现实世界
2. 具有良好的性能,存取效率高
缺点:
1. 结构比较复杂,而且随着应用规模的扩大,数据库的结构会变得越来越复杂,不利于最终用户掌握
2. 操作语言比较复杂
(3). 关系模型(relational model)
1. 历史:
1970年美国IBM公司E.F.Jose提出数据库管理系统的关系模式,开创了数据库关系方法和关系数据理论的研究
2. 关系数据模型的数据结构
从用户观点看,关系模型由一组关系组成,每个关系的数据结构是一张规范化的二维表
常用术语:
-
关系(relation):一个关系对应一张二维表,每一个关系有一个名称即关系名(关系就是二维表)
关系数据库是表的集合,即关系的集合 表这个概念和数学上的关系概念密切相关,因此称为关系模型 关系是笛卡尔积的子集,所以关系也是一张二维表
-
元组(tuple):表中的一行称为一个元组
-
属性(attribute):表中的一列称为一个属性,每个属性有一个名称即属性名
-
码/键(key):
范围大小:-
超码(superkey)
对于关系r的一个或多个属性的集合A,如果属性集A可以唯一的标识关系r中的一个元组,称属性集A为关系r的一个超码
-
候选码(candidate key)
对于关系r的一个或多个属性的集合A,如果属性集A是关系r的超码, 且属性集A的任意真子集都不能成为关系r的超码,称属性集A为候选码 也就是说,候选码是最小的超码
-
主码(primary key)
一个关系中有多个候选码,选择一个候选码作为主码
-
外码(foreign key)
定义:
表中的某个属性或属性组,用来描述本关系中的元组(实体)与另一个关系中的元组之间的联系, 因此,外码的取值范围对应于另一个关系的码的取值范围的子集
-
-
域(domain):属性的取值范围(是一组具有相同数据类型的值的集合)
空值(NULL)是所有可能的域的一个取值,表明值未知或不存在
-
笛卡尔积
笛卡尔积对应的一张表
-
分量(component):元组中的一个属性值
-
关系模式(relational schema):通过关系名和属性名列表对关系进行描述,相当于二维表的表头部分。
一般形式:关系名(属性名1,属性名2, …,属性名n)
对于一个二维表,有表头和表体部分,表头定义了该表的结构,表体就是所有数据行的集合 表头部分对应于关系模式
关系模型的规范条件:
1. 关系的每一个元组必须是可区分的,即存在码属性
2. 关系的每一个属性必须是一个不可分的数据项,不允许表中有表
2. 关系数据模型的操作
主要操作:查询和更新(插入、删除、修改)
关系模型的数据操作是集合操作,操作对象和操作结果都是关系
- 查询操作包括
-
基本操作
选择(select)
投影(project)
集合并(union)
集合差(except)
笛卡尔积 -
导出操作
除(divide)
交(intersection)
连接 (join)
关系代数
关系代数是通过关系代数运算来构造查询表达式
-
基本关系代数运算
- 选择
- 投影
- 集合并
- 集合差
- 笛卡尔积
-
其他运算
-
集合交
-
连接
一般连接(θ连接)
等值连接
自然连接 -
除运算
-
赋值
-
3. 关系数据模型的完整性约束
包括:
-
实体完整性(entity integrity)
实体完整性规则: 若属性集A是关系r的主码,则A不能去空值null 如果主码是由若干个属性的集合构成,则要求构成主码的每一个属性值都不能取空值
-
参照完整性
实现两个关系之间多对一联系的外码
实现两个关系之间多对多联系的联系关系及外码
实现关系内部多对一联系的外码
参照完整性规则: 若关系r的外码F参照关系s的主码,则对于关系r中的每一个元组在属性F上的取值,要么为空,要么等于关系s中的某个元组的主码值
-
用户自定义完整性
任何关系数据库管理系统都应该支持实体完整性和参照完整性,这是关系模型所要求的。
用户自定义完整性就是针对不同应用业务的语义而由用户自己定义的一些完整性约束条件关系数据库管理系统应该提供定义和检查这类用户自定义完整性的机制,以便统一处理,而不用应用程序承担这个任务
-
数据库模式导航图
一个含有主码和外码依赖的数据库模式可以通过模式导航图来表示
4. 关系数据模型的优缺点
优点:
1. 关系模型建立在严格的数学概念的基础上,有关系代数作为语言模型,有关系数据理论作为理论基础
2. 关系模型的概念单一
3. 关系模型的存储路径对用户透明,具有更高的数据独立性、更好的安全保密,简化了工作,提高软件开发和维护效率
缺点:由于存取路径对用户透明,查询效率往往不如菲关系数据模型
2. 非传统的逻辑数据模型
- 面向对象模型(OO模型)
- XML模型
(3). 物理模型(数据抽象的最底层)
-
定义:描述数据的物理存储结构和存取方法
由DBMS的设计决定,与操作系统、计算机硬件密切相关
三. 现实世界中客观对象的抽象过程
四. 数据模型的组成要素
数据模型是一个描述数据结构、数据操作、数据约束的概念及其符号表示系统
1. 数据结构(描述系统的静态特性)
-
定义:描述数据库的组成对象(实体)以及对象之间的联系
-
描述的内容
- 与对象的类型、内容、性质有关的
- 与对象之间联系有关的
-
特点:
数据结构刻画一个数据模型性质的基础和核心方面
在数据库管理系统中,通常按照数据结构的类型命名数据模型:层次模型、网状模型、关系模型
2. 数据操作(描述系统的动态特性)
- 定义:指对数据库中各种对象(型)的实例(值)运行执行的操作的集合,包括操作及有关的操作规则
3. 数据完整性约束
- 定义:是一组数据完整性规则