绪论
数据库系统概述
数据库三代演变
层次/网状数据库系统 关系数据库系统 新一代数据库系统
数据库的基本概念
数据 Data
数据库中存储的基本对象 描述事物的符号记录 种类包括数字、字符、图形、图像、声音等 数据的含义称为数据的语义,数据与其语义是不可分的
例: 93是一个数据 学生某门课的成绩 某人的体重
数据有结构的:记录是计算机存储数据的一种格式或方法
数据库 DB
长期存储在计算机内、有组织、可共享的大量数据的集合 按一定的数据模型组织、描述和存储 可为各种用户共享、冗余度较小、易扩展 数据独立性高
数据管理系统 DBMS
定义
位于用户应用与操作系统之间的一层数据管理软件 是基础软件,一个大型复杂的软件系统
用途
科学组织和存储数据、高效地获取和维护数据
功能
1、数据定义功能
提供数据定义语言 定义数据库中的数据对象 DDL
2、数据组织、存储和管理功能
分类组织存储和管理数据 确定在存储级别上的结构和存取方式 实现数据之间的联系 提供多种存取方法提高存取效率
3、数据操纵功能
提供数据操纵语言 DML 实现对数据库中数据的插入、删除、修改和查询等操作
4、数据库的事务管理与运行管理
数据的安全性、完整性、多用户并发使用 发生故障后的系统恢复数据库
由数据库管理系统统一管理和控制,保证事务正确运行
5、数据库的建立和维护功能
数据库的建立、修改、维护、监视、安全保护等
6、其他功能
数据库的备份和恢复 异构数据库之间访问操作 数据库管理系统之间的数据转换 与其他软件系统的通信
数据库系统 DBS
计算机系统中引入数据库后的系统构成 常常把数据库系统简称数据库
构成
数据库 数据库管理系统 应用程序 数据库管理员
数据库系统概述
什么是数据管理? 对数据进行分类、组织、编码、存储、检索和维护
发展历程:
(1)人工管理系统 应用程序与数据集一一对应
(2)文件系统
(3)数据库系统
数据库系统的特点
数据结构化
数据用数据模型描述,无需应用程序定义 数据记录可以变长 数据的最小存取单元是数据项 面向整个企业或组织 不仅内部结构化,整体也结构化
数据的共享性高,冗余度低且易扩充
面向整个系统,节约存储空间,减少数据冗余 避免数据之间的不相容性与不一致性 易于扩充
数据独立性高
物理独立性——物理存储变了,应用程序不用变 逻辑独立性——逻辑结构变了,应用程序不用变
数据有数据库管理系统统一管理和控制
数据的安全性保护
数据的完整性检查
数据的并发控制
数据的故障恢复
数据模型
数据模型是对现实世界数据特征的抽象,通俗讲是现实世界的模拟
应该满足三方面要求: (1)比较真实的模拟现实世界 (2)容易为人所理解 (3)便于在计算机上实现
数据模型是数据库系统的核心和基础
两大类数据模型
概念数据模型(信息模型)
描述数据的概念结构,是面向用户的,按用户的观点来对数据和信息建模,用于数据库设计
数据库设计人员和用户之间进行交流的语言
基本要求
简单清晰易理解 较强的语义表达能力
基本概念
(1)实体(Entity)
客观存在并可相互区别的事物 可以是具体的人、事、物,也可以是抽象的概念
(2)属性(Attribute)
实体所具有的某一特性,一个实体可以由若干个属性来刻画
(3)码(Key)
唯一标识实体的属性集合
(4)实体型(Entity Type)
具有相同属性的实体的集合,用实体名及其属性名集合来抽象和刻画同类实体
(5)实体集(Entity Set)
同一实体型的集合
(6)联系(Relationship)
现实世界中事物内部以及事物之间的联系在信息世界中反应为实体型之间的联系和实体型内部的联系
实体内部的联系:组成实体的各属性之间的联系 实体之间的联系:不同实体集之间的联系
实体之间的联系有一对一、一对多和多对多等多种类型
逻辑/物理 数据模型
按计算机系统的观点对数据建模,用于DBMS的实现
数据模型是严格定义的一组概念的集合
数据模型的三要素
(1)数据结构——描述系统的静态特性
数据结构的类型来命名数据模型
描述数据库的组成对象——对象的类型、内容、性质和对象之间的联系
(2)数据操作——描述系统的动态特性
对数据库中各种对象的实例允许执行的操作的集合包括操作及有关操作规则 类型:查询、更新(插入、删除、修改)、数据控制操作 操作语言:数据操纵语言DML、数据定义语言DDL、数据控制语言DCL
(3)完整性约束——描述系统的数据的正确性
一组完整性规则的集合 制约和依存规则 保证数据的正确有效和相容
定义:基本的通用的完整性约束条件,具体反映必须遵守的特定的语义约束条件
网状结构——网状模型 (格式化模型)
多对多
网状数据库系统采用网状结构来表示各类实体以及实体间的联系
- 表示方法(与层次数据模型相同)
- 实体型:用记录类型描述,每个节点表示一个记录类型(实体)
- 属性:用字段描述,每个记录可包含若干个字段
- 联系:用节点之间的连线表示记录类型(实体)之间的一对多父子关系
- 定义
- 允许一个以上的结点无双亲
- 一个结点可以有多于一个的双亲
网状模型间接表示多对多联系的方法:将多对多联系转化为一对多联系。例:一个学生可以选修若干门课程,一个课程可以被多个学生选修,是多对多联系,引进一个学生选课的联结记录如下
- 数据操纵与完整性约束
- 导航式的查询语言和增删改操作语言
- 完整性约束条件不严格
- 允许插入尚未确定双亲结点值的子女结点值
- 允许只删除双亲结点值
属籍类别概念
- 优点
- 良好的性能,存取效率较高
- 更为直接地描述现实世界,如一个结点可以有多个双亲
- 缺点
- 结构复杂,随着应用环境扩大,数据库的结构越来越复杂最终不利于用户掌握
- DDL\DML语言复杂,用于不容易使用
- 记录之间的联系是通过存取路径实现的,应用程序必须选择存取路径,加重程序员负担
层次结构——层次模型 (格式化模型)
层次模型用树形结构来表示各类实体以及实体间的联系 一对多(包括一对一)
- 表示方法
- 实体型:用记录类型描述,每个节点表示一个记录类型(实体)
- 属性:用字段描述,每个记录可包含若干个字段
- 联系:用节点之间的连线表示记录类型(实体)之间的一对多父子关系
- 定义
- 有且只有一个结点没有双亲结点,这个结点称为根节点
- 根以外的其他结点有且只有一个双亲结点
- 层次模型的数据操纵
- 查询
- 插入
- 删除
- 更新
- 完整性约束条件
- 无相应双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应子女结点值同时删除
- 更新操作时,应更新所有相应记录保持数据一致性
- 优点
- 数据结构简单清晰
- 查询效率高(树),性能优于关系模型,不低于网状模型
- 良好的完整性支持
- 缺点
- 多对多联系表示不自然
- 插入和删除操作限制多,编写复杂
- 查询子女必须通过双亲结点
- 层次数据库的命令(语言)趋于程序化
关系结构——关系模型
一对多(包括一对一) 几乎所有的数据库管理系统都支持
- 数据结构
- 关系:一个关系对应通常说的一张表
- 元组:表中的一行即为一个元组
- 属性:表中的一列即为一个属性,给每一个属性起一个名称即为属性名
- 主码:也成码键,表中的某个属性组,他可以唯一确定一个元组
- 域:是一组具有相同数据类型的值的集合,属性的取值范围来自某个域
- 例:学生年龄属性的域(15-45岁)
- 分量:元组中的一个属性值
- 关系模式:对关系的描述,是一个元组的集合,每个元组描述一个关系
- 例:关系名(属性1,属性2,……) 学生(学号,姓名,……)
关系术语 | 一般表格的术语 |
---|---|
关系名 | 表名 |
关系模式 | 表头(表格的描述) |
关系 | 一张二维表 |
元组 | 记录或行 |
属性 | 列 |
属性值 | 列值 |
属性名 | 列名 |
分量 | 一条记录中的一个列值 |
域 | 列的取值范围 |
非规范关系 | 表中有表(大表中嵌有小表) |
- 关系模型的数据操纵是集合操作,操作对象和操作结果都是关系
- 查询
- 插入
- 删除
- 更新
存取路径对用户隐蔽,只要指出“找什么”,而不必指出“怎么找”
**提高了数据的独立性、提高了用户生产率
- 优点
- 建立在严格的数学概念的基础上
- 概念单一
- 实体和各类联系都用关系来表示
- 对数据的检索结果也是关系
- 关系模型的存取路径对用户透明
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据开发建立的工作
- 缺点
- 存取路径对用户透明,查询效率往往不如格式化数据模型
- 为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度
面向对象结构
面向对象关系结构 (对象模型)
半结构化数据模型 (对象模型)
如XML
半结构化数据模型 (对象模型)
物理数据模型
描述数据在系统磁盘上的表示方法和存取方法
数据库系统的结构
数据库的模式概念
从数据库应用开发人员角度看,数据库系统采用三级模式结构,是数据库系统内部的系统结构 从用户角度看,数据库系统采用两级模式结构,是数据库系统的外部结构
- 数据库系统的结构有
- 单用户结构
- 主从式结构
- 分布式结构
- 客户-服务器
- 浏览器-应用服务器/数据库服务器
模式:是对数据库逻辑结构和特征的描述,是型的描述不涉及具体值,模式是相对稳定的 实例:数据库某一时刻的状态——模式的一个具体值,同一个模式可以有很多实例,实例随数据库中的更新而变动
数据库的三级模式结构
- 外模式(子模式或用户模式)
- 数据库用户使用的局部数据的逻辑结构和特征的描述
- 外模式通常是模式的子集,一个模式可以有多个外模式,反映了不同的用户的应用需求、看待数据的方式、对数据的保密要求
- 一个外模式可以为多个应用系统所使用,一个应用程序只能使用一个外模式
- 每个用户只能看见和访问所对应的外模式中的数据,简化用户视图
- 保护数据库安全性的一个有力措施
- 模式(逻辑模式)
- 一般,某个应用的数据库有一个模式
- 模式是数据库系统模式结构的中心
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用程序、开发工具及高级程序设计语言无关
- 定义模式
- DDL定义数据的逻辑结构,以某种数据模型为基础,数据记录由哪些数据项构成,数据项的名字、类型、取值范围等
- 定义数据之间的联系
- 定义与数据有关的安全性、完整性要求
- 内模式(存储模式)
- 一个数据库只有一个内模式
- 是数据物理结构和存储方式的描述
- 是数据在数据库内部的表达方式
- 记录的存储方式(顺序存储、堆存储、Cluste按hash方法存储等)
- 索引的组织方式(B+树,Bitmap,Hash)
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定——如变长/定长,记录是否可以跨页存放等
数据库的二级映像功能与数据独立性
- 三级模式是对数据的三个抽象级别
- 数据库管理系统内部提供二级映像
- 外模式/模式映像
- 模式/内模式映像
- 三个抽象层次的联系和转换
- 对于每一个外模式,有一个外模式/模式映像
- 保证数据的逻辑独立性
- 当模式改变时,数据库管理员对外模式/模式映像作出相应改变,使外模式保持不变
- 应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
- 数据库中模式/内模式映像是唯一的
- 模式/内模式映像定义了数据全局逻辑结构与存储结构之间的对应关系,说明某个逻辑记录对应何种存储结构
- 保证数据的物理独立性
- 当数据库的存储结构改变了(如选用了另一种存储结构),数据库管理员对模式/内模式映像作出相应改变,使模式保持不变
- 模式不变,则应用程序不变,保证了数据与程序的物理独立性,简称数据的物理独立性
(1)保证了应用程序的稳定性(除非应用需求本身发生变化,否则一般不需要修改) (2)从程序为中心——发展为以数据为中心(具有数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离) (3)数据的存取由数据库管理系统管理(简化了应用程序编制,大大减少了应用程序的维护和修改)
数据库系统的组成
- 数据库
- 数据库管理系统(及其开发工具)
- 应用程序
- 数据库管理员
硬件平台及数据库
- 数据库系统对硬件资源的要求
- 足够大的内存
- 足够大的磁盘或磁盘阵列等外部设备
- 较高的通道能力,提高数据传送率
软件
- 数据库管理系统
- 支持数据库管理系统运行的操作系统
- 与数据库接口的高级语言及其编译系统
- 已数据库管理系统为核心的应用开发工具
- 为特定应用环境开发的数据库应用系统
人员
数据库管理员 DBA
- 参与确定数据库中的信息内容和结构
- 参与数据库的存储结构和存取策略的设计
- 参与确定数据安全性要求和完整性约束条件
- 监控数据库的使用和运行
- 周期性转储数据库
- 数据文件
- 日志文件
- 系统故障恢复
- 介质故障恢复
- 监事审计文件
- 周期性转储数据库
- 数据库的改进和重组
- 性能的监控和调优
- 定期对数据库进行重组织,提高系统的性能
- 需求增加和改变时,数据库需要重构造
系统分析员
- 负责应用系统的需求分析和规范说明
- 与用户及数据库管理员结合,确定系统的软硬件配置
- 参与数据库系统的概要设计
数据库设计人员
- 参加用于需求调查和系统分析
- 确定数据库中的数据
- 设计数据库各级模式
应用程序员
- 设计和编写应系统的程序模块
- 进行调试和安装
最终用户
用户指最终用户,他们通过应用系统的用户接口使用数据库
- 偶然用户
- 不经常访问数据库,但每次访问往往需要不同的数据库信息
- 企业或组织机构中的中高级管理人员
- 简单用户
- 主要工作是查询和更新数据库
- 银行的职员、机票预定人员、旅馆总台服务员
- 复杂用户
- 工程师、科学家、经济学家、科技工作者等
- 直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的应用程序接口编制自己的应用程序
不同的人员涉及不同的数据抽象级别,具有不同的数据视图
关系数据库
关系模型(关系数据结构)
单一的数据结构——关系 现实世界的实体以及实体间的各种联系均用关系来表示 关系->关系模式->关系数据库
- 域是一组具有相同数据类型的值的集合,属性的取值范围来自某个域
- 例:学生年龄属性的域(15-45岁),整数,实数,指定长度字符串集合
- 域的笛卡尔积空间
- 给定一组域,允许其中某些域是相同的,域的笛卡尔积空间是指这些域的所有可能的组合
- 基数
- 若Di为有限集,其基数为m,则D1D2D3Dn的基数M为M=m1m2m3mn
- 笛卡尔积的表示方法
- 笛卡尔积可表示为一张二维表
- 表中的每行对应于一个元组,表中的每列对应一个域
例如:
(1)关系
D1D2D3*Dn的子集叫作在域D1,D2,D3,Dn上的关系,简称关系R R:关系名 n:关系的度(Degree) 关系R是一个二维表,表中的每一行对应于一个元组,表中的每一列对应于一个属性
(2)元组
关系中的每个元素(d1,d2,dn)叫作一个n元组,简称元组,通常用t表示
(3)属性
关系中不同列称为属性,每个属性有一个名字 n目关系必有n个属性
(4)码
- 候选码
- 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
- 简单的情况:候选码只包含一个属性
- 全码
- 最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码
- 主码
- 若关系模式有多个候选码,则选定其中一个作为主码
- 一个关系模式只能有一个主码
- 主属性
- 候选码的诸属性称为主属性
- 不包含在任何候选码中的属性称为非主属性或非码属性
(5)单元关系与二元关系
当n=1时,称该关系为单元关系或一元关系 当n=2时,称该关系为二元关系
(6)基本关系的性质
- 列是同质的,即来自同一个属性
- 不同的列可出自同一个域
- 列的顺序无所谓,列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的顺序无所谓,行的次序可以任意交换
- 分量必须取原子值
关系模式
- 关系模式是型、关系是值
- 关系模式是对关系的描述
- 元组集合的结构
- 属性构成
- 属性来自的域
- 属性与域之间的映像关系
- 完整性约束条件
- 元组集合的结构
- 关系模式可以形式化表示为
- R 关系名
- U 组成该关系的属性名集合
- D U中属性所来自的域
- DOM 属性向域的映像集合
- F 属性间数据的依赖关系的集合
关系模式可以简记为 R(U) 或 R(A1,A2,An) R:关系名 An:属性名 域名及属性向域的映像常常直接说明为属性的类型、长度
- 型与值的关系
- 关系模式:是对关系的描述,是静态的、稳定的
- 关系:是关系模式在某一时刻的状态或内容,是动态的、随时间不短变化的
- 关系模式和关系通常笼统为关系
- 通过上下文加以区别
关系数据库
- 关系数据库
- 在一个给定的应用领域中,所有关系的集合构成一个关系数据库
- 关系数据库的型与值
- 关系数据库的型:关系数据库模式,是对关系数据库的描述
- 关系数据库的值:关系模式在某一时刻对应的关系的集合,通常称为关系数据库
关系的三类完整性约束
- 实体完整性和参照完整性
- 关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
- 用户定义的完整性
- 应用领域需要遵循的约束条件,体现了具体领域中的语义约束,应该由应用程序员在应用程序中实现
(1)实体完整性
关系的主属性不能取空值,即关系中的主码不能为空
(2)参照完整性
在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用
外码
关系R和S不一定是不同的关系 目标关系S的主码Ks和参照关系的外码F必须定义在同一个或一组域上 外码并一定要与相应的主码同名,当外码与相应的主码属于不同关系时,往往取相同的名字以便于识别
参照完整性规则
- 参照完整性规则
- 若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
- 或取空值(F的每个属性值均为空值)
- 或等于S中某个元组的主码值
- 若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
(3)用户定义的完整性
- 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
- 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
关系代数
- 关系代数语言
- 用对关系的运算来表达查询要求
- 关系演算语言:用谓词来表达查询要求
- 元组关系演算语言
- 谓词变元的基本对象是元组变量
- 代表:APLHA,QUEL
- 域关系演算语言
- 谓词变元的基本对象是域变量
- 代表:QBE
- 元组关系演算语言
- 具有关系代数和关系演算双重特点的语言
- 代表:SQL
- 关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
- 关系代数
- 运算对象是关系
- 运算结果也是关系
- 关系代数的运算符有两类:集合运算符和专门的关系运算符
关系代数运算符
传统的集合运算
并
- R和S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
- RUS
- 仍为n目关系,由属于R或属于S的元组组成
-
例如:
差
- R和S
- 具有相同的目n
- 相应的属性取自同一个域
- R-S
- 仍为n目关系,由属于R而不属于S的所有元组组成
例如:
交
- R和S
- 具有相同的目n
- 相应的属性取自同一个域
- R交S
- 仍为n目关系,由既属于R又属于S的元组组成
例如:
笛卡尔积
- R:n目关系,k1个元组
- S:m目关系,k2个元组
- RXS
- 列:(n+m)列元组的集合
- 元组的前n列是关系R的一个元组
- 后m列是关系S的一个元组
- 行:k1Xk2个元组
- 列:(n+m)列元组的集合
例如: