# 1.1 数据库系统概述
# 1.1.1 四个基本概念
# 数据(data)(选择填空)
数据是数据库中存储的基本对象
定义:数据是描述事物的符号记录
数据的种类有文本,图形,图像,音频,视频,学生的档案记录,货物的运输情况
数据的特点:数据与语义是密不可分的(数据的含义称为数据的语义)
数据是现象,而信息反应实质
# 数据库(database)
定义:数据库是长期储存在计算机内,有组织的、可共享的大量数据的集合
数据库的基本特征有
- 数据按照一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
# 数据库管理系统(DBMS)Database Management System
定义:位于用户与操作系统之间的一层数据管理软件
是基础软件,一个大型复杂的软件系统(系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统;应用软件是用户可以使用的各种程序设计语言,以及用各种程序语言编制的应用程序的集合。)
作用:科学地组织和储存数据、高效的维护和获取数据
主要功能:
- 数据定义功能:DDL
- 数据组织、储存和管理
- 数据操纵功能:DML
- 数据库的事物管理和运行管理
- 数据库的建立运行管理
- 数据库的建立和维护功能
常见的 DBMS
关系型数据库
1. MySQL数据库
2. Microsoft SQL Server数据库
3. Oracle数据库
4. Postgresql数据库
5. Sybase数据库
6. DB2数据库
7. Access数据库
非关系型数据库
1. Mongodb数据库
2. Redis数据库
3. Hbase数据库
4. Memcaced数据库
# 数据库系统(DBS)
定义:数据库系统是由数据库,数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DBA)组成的储存、管理、处理和维护数据的系统
构成:
- 数据库
- 数据库管理系统(及其开发工具)
- 应用系统
- 数据库管理员
# 1.1.2 数据库管理技术
数据管理定义:对数据进行・分类、组织、编码、存储检索和维护
数据处理的中心问题
数据管理技术的三个阶段:
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
# 1.1.3 数据系统的特点(选择填空)
# 数据结构化
整体结构化:
- 不在仅仅针对某一个应用,而是面向整个组织或者企业
- 不仅数据内部结构化,整体是结构化的,数据之间具有联系
实现数据的真正结构化
- 数据的结构用数据模型描述,无需程序定义和解释
- 数据可以变长
- 数据的最小单位是数据项
# 数据的共享性高,冗余度低,易扩展
数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户多个应用共享使用
数据共享的好处:
- 减少数据冗余,节约储存空间
- 避免数据之间的不相容性与不一致性
- 使系统易于扩充
# 数据独立性高
物理独立性:指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。
# 数据由 DBMS 统一管理和控制
DBMS 提供的数据控制功能
(1) 数据的安全性(Security)保护 保护数据,以防止不合法的使用造成的数据的泄密和破坏。
(2) 数据的完整性(Integrity)检查 将数据控制在有效的范围内,或保证数据之间满足一定的关系。
(3) 并发(Concurrency)控制 对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
(4) 数据库恢复(Recovery) 将数据库从错误状态恢复到某一已知的正确状态。
# 1.2 数据模型
在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
通俗地讲数据模型就是现实世界的模拟。
数据模型应满足三方面要求
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
注:数据模型是数据库系统的核心和基础
# 1.2.1 两大类数据模型(了解)
- 概念模型:也称信息模型,它是按用户的观点来对信息和信息建模,用于数据库设计
- 逻辑模型:主要包括网状模型、层次模型、关系模型、面向对象模型等,按计算机系统的观点对数据建模,用于 DBMS 实现。
- 物理模型:是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。
# 1.2.2 概念模型
概念模型:
- 概念模型用于信息世界的建模
- 是现实世界到机器世界的一个中间层次
- 是数据库设计的有力工具 数据库设计人员和用户之间进行交流的语言
对概念模型的基本要求:
- 较强的语义表达能力
- 能够方便、直接地表达应用中的各种语义知识
- 简单、清晰、易于用户理解
# 信息世界中的基本概念
实体(Entity) 客观存在并可相互区别的事物称为实体。 可以是具体的人、事、物或抽象的概念。
属性(Attribute) 实体所具有的某一特性称为属性。 一个实体可以由若干个属性来刻画。
码(Key) 唯一标识实体的属性集称为码。
域(Domain) 属性的取值范围称为该属性的域。
实体型(Entity Type) 用实体名及其属性名集合来抽象和刻画同类实体称为实体型
实体集(Entity Set) 同一类型实体的集合称为实体集
联系(Relationship) 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。
实体内部
的联系通常是指组成实体的各属性之间的联系实体之间
的联系通常是指不同实体集之间的联系
# 概念模型的一种表示方法
概念模型的表示方法 —E-R 图、实体-联系方法 (E-R 方法)
- 用 E-R 图来描述现实世界的概念模型
- E-R 方法也称为 E-R 模型
# 1.2.3 数据模型的组成要素(三个)
# 数据结构
数据结构描述数据库的组成对象,以及对象之间的联系,对系统静态的描述
# 数据操作
对数据库中的对象的实例(值)允许执行的操作以及相关的操作规则,对系统动态的描述
# 完整性约束条件
一组完整性规则的集合。
完整性规则:给定的数据模型中数据及其联系所具有的制约和储存规则
用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。
# 1.2.4 最常用的数据模型
非关系模型
层次模型 (Hierarchical Model) 网状模型 (Network Model)
关系模型 (Relational Model) 面向对象模型 (Object Oriented Model)
对象关系模型 (Object Relational Model)
基本层次联系是指两个记录以及它们之间的一对多(包括一对一)的联系
# 1.2.5 层次模型
# 1、层次模型的数据结构
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型
- 有且只有一个节点没有双亲结点,这个结点被称为根结点
- 根以外的其他结点有且只有一个双亲结点
每个结点表示一个记录类型,记录类型之间的联系用结点之间的连线表示,这种联系是父子之间的一对多的关系
# 2、层次模型的数据操纵与完整性约束
层次模型的数据操纵主要有查询、插入、删除和更新,操纵时要保证层次模型完整性约束条件
# 3、层次模型的优缺点
优点:
- 层次模型的数据结构比较简单清晰
- 层次数据库的查询效率高
- 层次数据模型提供了良好的完整性支撑
缺点:
- 现实世界中很多联系是非层次性的,如结点之间具有多对多联系,不适合层次模型表示
- 如果一个结点具有多个双亲结点编写很复杂
- 查询子女结点必须通过双亲结点
- 由于结构严密,层次命令趋于程序化
# 1.2.6 网状模型
# 1、网状模型的数据结构
在数据库中满足下面两个条件的基本层次联系集合称为网状模型
- 允许一个以上的结点无双亲
- 一个结点可以有多于一个的双亲
# 2、网状模型的数据操纵与完整性约束
- 支持记录码的概念,码即唯一标识记录的数据项的集合
- 保证一个联系中双亲记录和子女记录之间是一对多的关系
- 可以支持双亲和子女记录之间
# 3、网状模型的优缺点
优点:
- 能够更为直接的描述现实世界,如一个结点可以有多个双亲,结点之间可以有多种联系
- 具有良好的性能,存取效率较高
缺点:
- 结构比较复杂,而且伴随着应环境的扩大,数据库的结构就变得越来越复杂
# 1.2.7 关系模型
关系数据库系统采用关系模型作为数据的组织方式
# 1、关系数据模型的数据结构
在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
- 关系(Relation) 一个关系对应通常说的一张表
- 元组(Tuple) 表中的一行即为一个元组
- 属性(Attribute) 表中的一列即为一个属性,给每一个属性起一个名称即属性名
- 主码(Key) 表中的某个属性组,它可以唯一确定一个元组。
- 域(Domain) 属性的取值范围。
- 分量 元组中的一个属性值。
- 关系模式 对关系的描述
关系必须是规范化的,满足一定的规范条件
最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表
# 2、关系数据模型的操纵与完整性约束
- 数据操作是集合操作,操作对象和操作结果都是关系
- 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合
- 存取路径对用户透明 / 隐蔽,用户只要指出 “干什么”,不必详细说明 “怎么干”
# 3、关系数据模型的优缺点
优点:
- 建立在严格的数学概念的基础上
- 概念单一
实体和各类联系都用关系来表示
对数据的检索结果也是关系 - 关系模型的存取路径对用户透明
具有更高的数据独立性,更好的安全保密性
简化了程序员的工作和数据库开发建立的工作
缺点:
- 存取路径对用户透明导致查询效率往往不如非关系数据模型
- 为提高性能,必须对用户的查询请求进行优化 增加了开发 DBMS 的难度
# 1.3 数据库系统结构
# 1.3.1 数据库系统模式的概念
# 模式
- 数据库全体数据逻辑结构和特征的描述
- 是型的描述
- 反映的是数据的结构及其联系
- 模式是相对稳定的
型是对一类型的结构和属性的说明
值是型的一个具体赋值
# 1.3.2 数据库系统的三级映像
# 1、模式
模式也叫逻辑结构
数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图,综合了所有用户的需求
一个数据库只有一个模式
模式的地位:是数据库系统模式结构的中间层
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用程序、开发工具及高级程序设计语言无关
逻辑结构:数据记录由哪些数据项组成,数据项的名字,类型,取值范围等,而且要定义数据之间的联系,与数据有关的安全性,完整性操作。
# 2、外模式
外模式也叫做子模式
数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
外模式的地位:介于模式与应用之间
- 模式与外模式的关系:一对多
外模式是模式的子集,一个数据库可以有多个外模式反应了不同的用户的应用需求、看待数据的方式、对数据保密的要求
对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同
- 外模式与应用的关系:一对多
同一外模式也可以为某一用户的多个应用系统所使用
但一个应用程序只能使用一个外模式外模式的用途
- 保证数据库安全性的一个有力措施
- 每个用户只能看见和访问所对应的外模式中的数据
外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录 (外模式),也可以利用数据操纵语言 (DML) 对这些数据记录进行。外模式反映了数据库的用户观。
# 3、内模式
内模式也称为储存模式
是数据物理结构和储存方式的描述
是数据在数据库内部的表示方式
- 记录的存储方式(顺序存储,按照 B 树结构存储,按 hash 方法存储)
- 索引的组织方式
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定
一个数据库只有一个内模式
# 1.3.3 数据库的二级映像域数据独立性
三级模式是对数据的三个抽象级别
二级映象在 DBMS 内部实现这三个抽象层次的联系和转换
外模式/模式映像
模式/内模式映像
# 外模式/模式映像
保证数据的逻辑独立性:
- 当模式改变时,数据库管理员修改有关的外模式 / 模式映象,使外模式保持不变
- 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
# 模式/内模式映像
- 模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
- 数据库中模式/内模式映象是唯一的
- 该映象定义通常包含在模式描述中
- 保证数据的物理独立性
- 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变
- 应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
- 数据库的二级映像
- 保证了数据库外模式的稳定性
- 从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改
- 数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去
- 数据的存取由 DBMS 管理
- 用户不必考虑存取路径等细节
- 简化了应用程序的编制
- 大大减少了应用程序的维护和修改
# 1.4 数据库系统的组成
数据库
数据库管理系统(及其开发工具)
应用系统
数据库管理员
硬件平台及数据库
- 足够大的内存 --- 操作系统、DBMS 的核心模块 、数据缓冲区、 应用程序
- 足够大的外存 ----- 磁盘或磁盘阵列(数据库)、光盘、磁带(数据备份)
- 较高的通道能力,提高数据传送率
软件
- DBMS
- 支持 DBMS 运行的操作系统
- 与数据库接口的高级语言及其编译系统
- 以 DBMS 为核心的应用开发工具
- 为特定应用环境开发的数据库应用系统
人员
数据库管理员
1. 决定数据库中的信息内容和结构
2. 决定数据库的存储结构和存取策略
3. 定义数据的安全性要求和完整性约束条件
4. 监控数据库的使用和运行- 周期性转储数据库
- 系统故障恢复
- 介质故障恢复
- 监视审计文件
5. 数据库的改进和重组
- 性能监控和调优
- 定期对数据库进行重组织,以提高系统的性能
- 需求增加和改变时,数据库须需要重构造
系统分析员和数据库设计人员
- 系统分析员
- 负责应用系统的需求分析和规范说明
- 与用户及 DBA 协商,确定系统的硬软件配置
- 参与数据库系统的概要设计
- 数据库设计人员
- 参加用户需求调查和系统分析
- 确定数据库中的数据
- 设计数据库各级模式
应用程序员
- 设计和编写应用系统的程序模块
- 进行调试和安装
用户
- 偶然用户
- 简单用户
- 复杂用户