基于《数据库系统概论》第5版 王珊 编著
1. 绪论
1.1. 数据库系统概述
1.1.1. 四个基本概念
数据Data
数据是数据库中存储的基本对象
数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等
DB数据库(Database)
是长期储存
在计算机内
、有组织
、可共享
的大量数据
的集合
数据库的基本特征
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
DBMS数据库管理系统(Database Management System)
DBMS是位于用户与操作系统之间的一层数据管理软件
,是基础软件
DBMS的用途:科学地组织和存储数据、高效地获取和维护数据
DBMS的主要功能
-
数据定义功能
提供数据定义语言(DDL) 定义数据库中的数据对象 -
数据组织、存储和管理
分类组织、存储和管理各种数据
确定组织数据的文件结构和存取方式
实现数据之间的联系
提供多种存取方法提高存取效率 -
数据操纵功能
提供数据操纵语言(DML) 实现对数据库的基本操作(查询、插入、删除和修改) -
数据库的事务管理和运行管理
数据库在建立、运行和维护时由DBMS统一管理和控制
保证数据的安全性、完整性、多用户对数据的并发使用
发生故障后的系统恢复 -
数据库的建立和维护功能(实用程序)
数据库初始数据装载转换
数据库转储
介质故障恢复
数据库的重组织
性能监视分析等 -
其它功能
DBMS与网络中其它软件系统的通信
两个DBMS系统的数据转换
异构数据库之间的互访和互操作
如:MySQL、Oracle、Microsoft SQL Server等,这些系统用来创建、管理和维护数据库
DBS数据库系统(Database System)
数据库系统的构成
- 数据库 Database
- 数据库管理系统(及其开发工具)Database Management System
- 应用系统
- 数据库管理员 Database Administrator
数据库系统的特点
- 数据结构化
- 数据的共享性高,冗余度低,易扩充
- 数据独立性高
物理独立性
指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。逻辑独立性
指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。- 数据独立性是由DBMS的二级映像功能来保证的
- 数据由DBMS统一管理和控制
- (1)·
数据的安全性(Security)保护·
保护数据,以防止不合法的使用造成的数据的泄密和破坏。 - (2)
数据的完整性(Integrity)检查
将数据控制在有效的范围内,或保证数据之间满足一定的关系。 - (3)
并发(Concurrency)控制
对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。 - (4)
数据库恢复(Recovery)
将数据库从错误状态恢复到某一已知的正确状态。
- (1)·
如:电子商务网站,在线银行系统、医院的信息管理,这些系统可以使用各种类型的数据来支持业务需求和决策。
1.1.2. 数据管理技术的产生和发展
什么是数据管理:对数据进行分类、组织、编码、存储、检索和维护
1.2. 数据模型
1.2.1. 数据模型的概念
通俗地讲数据模型就是现实世界的模拟
数据模型应满足三方面要求:
- 能比较
真实
地模拟现实世界 容易
为人所理解
- 便于在计算机上
实现
1.2.2. 两大类数据模型
- (1)
概念模型 也称信息模型
,它是按用户的观点
来对数据和信息建模,用于数据库设计。 - (2)
逻辑模型
和物理模型
逻辑模型主要包括网状模型
、层次模型
、关系模型
、面向对象模型
等,按计算机系统的观点
对数据建模,用于DBMS实现。
物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。
客观对象的抽象过程—两步抽象
- 现实世界中的客观对象抽象为
概念模型
; - 把
概念模型
转换为某一DBMS支持的数据模型
。
1.2.3. 数据模型的组成要素
-
数据结构
数据结构是所研究的对象类型的集合。这些对象是数据库的组成成分,数据结构指对象和对象间联系的表达和实现,是对系统静态特征的描述,包括两个方面:
(1)数据本身:类型、内容、性质。例如关系模型中的域、属性、关系等。
(2)数据之间的联系:数据之间是如何相互关联的,例如关系模型中的主码、外码联系等。 -
数据操作
数据操作
- 对数据库中各种
对象(型)
的实例(值)
允许执行的操作
,及有关的操作规则
数据操作的类型
- 查询
- 更新(包括插入、删除、修改)
- 对数据库中各种
-
数据的完整性约束条件
- 数据的完整性约束条件是一组
完整性规则
的集合,规定数据库状态及状态变化所应满足的条件,以保证数据的正确性、有效性和相容性。 - 完整性规则:给定的数据模型中数据及其联系所具有的制约和储存规则
- 数据的完整性约束条件是一组
1.2.4. 概念模型
信息世界中的基本概念
- (1)
实体
(Entity)
客观存在并可相互区别的事物
称为实体。
可以是具体的人、事、物或抽象的概念。 - (2)
属性
(Attribute)
实体
所具有的某一特性
称为属性。
一个实体可以由若干个属性来刻画。 - (3)
码
(Key)
唯一标识实体的属性
集称为码。
(4)域
(Domain)
属性
的取值范围
称为该属性的域。 - (5)
实体型
(Entity Type)
用实体名
及其属性名集合
来抽象和刻画同类实体
称为实体型 - (6)
实体集
(Entity Set)
同一类型实体的集合
称为实体集 - (7)
联系
(Relationship)- 现实世界中
事物内部
以及事物之间
的联系
在信息世界中反映为实体内部的联系和实体之间的联系。 - 实体
内部的联系
通常是指组成实体的各属性之间
的联系 - 实体
之间的联系
通常是指不同实体集之间
的联系
- 现实世界中
两个实体型之间的联系
- 一对一联系(1:1)
- 一对多联系(1:n)
- 多对多联系(m:n)
概念模型的一种表示方法:实体-联系方法(E-R方法)(Entity Relationship Diagram)
联系本身
也是一种实体型
,也可以有属性
。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来
1.2.5. 关系模型
关系数据库系统采用关系模型
作为数据的组织方式
关系模型中数据的逻辑结构
是一张二维表
,它由行
和列
组成
几个名词解释:
-
关系
(Relation)
一个关系对应通常说的一张表 -
元组
(Tuple)
表中的一行即为一个元组 -
属性
(Attribute)
表中的一列即为一个属性,给每一个属性起一个名称即属性名 -
主码
(Key)
表中的某个属性组
,它可以唯一确定一个元组
。 -
域
(Domain)
属性的取值范围。 -
分量
元组中的一个属性值。 -
关系模式
对关系的描述
关系名(属性1,属性2,…,属性n)
学生(学号,姓名,年龄,性别,系,年级) -
规范化
- 关系必须是规范化的,满足一定的规范条件
- 最基本的规范条件:
关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表
关系数据模型的操纵与完整性约束:
数据操作
是集合操作,操作对象和操作结果都是关系- 关系的
完整性约束条件
- 实体完整性
- 参照完整性
- 用户定义的完整性
优缺点:
优点
- 建立在严格的数学概念的基础上;
- 概念单一:
实体和各类联系都用关系来表示;
对数据的检索结果也是关系; - 关系模型的存取路径对用户透明;
具有更高的数据独立性,更好的安全保密性
简化了程序员的工作和数据库开发建立的工作;
缺点
- 存取路径对用户透明导致查询效率往往不如非关系数据模型;
- 为提高性能,必须对用户的查询请求进行优化,增加了开发DBMS的难度;
1.3. 数据库系统结构和组成
1.3.1. 数据库系统结构
两种角度
-
从数据库
管理系统角度
看,数据库系统通常采用三级模式结构,是数据库系统内部
的系统结构 -
从数据库
最终用户角度
看(数据库系统外部
的体系结构) ,数据库系统的结构分为:- 单用户结构
- 主从式结构
- 分布式结构
- 客户/服务器
- 浏览器/应用服务器/数据库服务器多层结构等
数据库系统模式的概念
来自张教授的解疑:
模式是数据库结构的描述、关系模式是表的结构的描述
;
“型” 和“值” 的概念:
- 型(Type)
对某一类数据的结构和属性的说明 - 值(Value)
是型的一个具体赋值
学生记录型:
(学号,姓名,性别,系别,年龄,籍贯)
一个记录值:
(900201,李明,男,计算机,22,江苏)
模式(Schema):
数据库逻辑结构和特征的描述
是型的描述
- 反映的是数据的结构及其联系
- 模式是相对稳定的
实例(Instance):
- 模式的一个具体值
反映数据库某一时刻的状态
同一个模式可以有很多实例
- 实例随数据库中的数据的更新而变动
例如
:在学生选课数据库模式
中,包含学生记录、课程记录和学生选课记录
- 2003年的一个学生数据库
实例
,包含:
2003年学校中所有学生的记录
学校开设的所有课程的记录
所有学生选课的记录 2002
年度学生数据库模式对应的实例
与2003
年度学生数据库模式对应的实例
是不同的
数据库系统的三级模式结构
模式的地位:是数据库系统模式结构的中间层
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用程序、开发工具及高级程序设计语言无关
模式的定义:
- 数据的逻辑结构(数据项的名字、类型、取值范围等)
- 数据之间的联系
- 数据有关的安全性、完整性要求
外模式(External Schema)(也称子模式或用户模式)
- 数据库用户(包括应用程序员和最终用户)使用的
局部
数据的逻辑结构和特征的描述 - 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
外模式的地位:介于模式与应用之间
- 模式与外模式的关系:一对多
外模式通常是模式的子集;
一个数据库
可以有多个外模式
。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求;
对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同; - 外模式与应用的关系:一对多
同一外模式也可以为某一用户的多个应用系统所使用;
但一个应用程序只能使用一个外模式;
外模式的用途
- 保证数据库安全性的一个有力措施;
- 每个用户只能看见和访问所对应的外模式中的数据;
内模式(Internal Schema)(也称存储模式)
- 是数据
物理结构和存储方式
的描述 - 是
数据
在数据库内部
的表示方式:- 记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)
- 索引的组织方式
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定
一个数据库只有一个内模式
——数据库模式、外模式、内模式总结——
外模式(External Schema或User View)的例子:
- 假设一个学校数据库,学生可以看到自己的成绩、课程信息等,这就是学生的外模式。
- 老师可以看到所有学生的成绩信息,这就是老师的外模式。
- 管理员可以查看和管理整个学校的所有信息,这就是管理员的外模式。
模式(Conceptual Schema或Logical Schema)的例子:
- 概念模式描述了整个学校数据库中所有的实体,如学生、课程、老师、成绩等,以及它们之间的关系。
- 比如学生和课程之间是多对多的关系,一个学生可以选多门课程,一门课程也可以有多个学生选修。
内模式(Internal Schema或Physical Schema)的例子:
- 内模式描述了数据在物理存储层面的组织方式,比如使用什么样的文件组织结构、索引机制等。
- 比如学生信息可以存储在B+树索引的文件中,成绩信息存储在hash表中。这些细节都属于内模式。
——数据库的二级映像功能——
-
三级模式是对数据的三个抽象级别
-
二级映象
在DBMS内部实现这三个抽象层次
的联系
和转换
- 外模式/模式映像
- 模式/内模式映像
外模式/内模式映象定义了数据局部逻辑结构
与数据全局逻辑结构
的对应关系。
- 映象定义通常包含在各自外模式的描述中
- 保证数据的逻辑独立性
- 当
模式改变
时(例如在模式中增加或删除了某些属性,只要不影响到各个外模式),数据库管理员修改有关的外模式/模式映象
,使外模式
保持不变
- 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称
数据的逻辑独立性
。
- 当
- 同
一个模式
可以有任意多个外模式
模式/内模式映象定义了数据全局逻辑结构
与存储结构之间
的对应关系。
- 数据库中
模式/内模式映象
是唯一
的 - 该映象定义通常包含在模式描述中
- 保证数据的物理独立性
- 当
内模式改变
时(例如把学生信息从文件存储改为数据库存储,或者把索引机制从B+树改为哈希表),数据库管理员修改模式/内模式映象
,使模式保持不变
- 应用程序不受影响。保证了数据与程序的物理独立性,简称
数据的物理独立性
。
- 当
1.3.2. 数据库的组成
- 数据库
- 数据库管理系统(及其开发工具)
- 应用系统
- 数据库管理员
- 硬件平台及数据库
- 软件
- 人员
2. 关系数据库
2.1. 关系数据结构及形式化定义
2.1.1. 关系
给定一组域D1,D2,…,Dn
域(Domain):
域
是一组具有相同数据类型的值的集合
。例: 整数、实数
笛卡尔积(Cartesian Product)
笛卡尔积(Cartesian Product)
所有域的所有取值的一个组合
(D1 x D2 x … x Dn)- 不能重复;
元组
(Tuple) :笛卡尔积中每一个元素
(d1,d2,…,dn)叫作一个n元组
分量
(Component) :笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量
;
基数
(Cardinal number):如果集合A有m个元素,集合B有n个元素,那么它们的笛卡尔积A×B就有m×n个元素。笛卡尔积的基数就是构成它的集合的基数的乘积。
笛卡尔积的表示方法:
- 笛卡尔积可表示为一个
二维表
; - 表中的
每行
对应一个元组
,表中的每列对应一个域
关系
关系:笛卡尔积D1×D2×…×Dn的
子集叫作在
域D1,D2,…,Dn上的
关系`,表示为:
- R:关系名
- n:关系的
目
或度
(Degree)
元组
:关系
中的每个元素是关系中的元组
,通常用t表示
当n=1时,称该关系为单元关系
(Unary relation)或一元关系
;
当n=2时,称该关系为二元关系
(Binary relation);
关系的表示
:关系也是一个二维表
,表的每行
对应一个元组
,表的每列
对应一个域
属性
:
- 关系中不同列可以对应相同的域;
- 为了加以区分,必须对每
列
起一个名字
,称为属性
(Attribute); - n目关系必有n个属性;
码
:
候选码
(Candidate key)
若关系中的某一属性组
(一个或多个属性)的值能唯一地标识一个元组
,则称该属性组为候选码; 其具备唯一性和最小性。全码
(All-key)
最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码
(All-key),所有的属性组合在一起才能实现唯一地标识一个元组
主码
若一个关系有多个候选码
,则选定其中一个为主码
(Primary key)。有多种属性组合方式可以实现唯一地标识一个元组
,则随意选一种组合为主码主属性
在一个表中,可能存在多个候选码。这时,通常会选择一个候选码作为主键(主属性) 主属性的特征包括:- 唯一性:每个主属性值在表中都是唯一的,不会重复。
- 非空性:主属性不能包含空值(NULL)。
- 最小性:候选码应该是最小的唯一标识记录的属性集,即不能去掉其中任何一个属性而仍然唯一标识记录。
- 非主属性
不包含在任何候选码中的属性称为非主属性
( Non-Prime attribute)或非码属性(Non-key attribute) ;
三类关系
基本关系
(基本表或基表)
实际存在的表,是实际存储数据的逻辑表示查询表
查询结果对应的表视图表
由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
基本关系(二维表)的性质
① 列是同质的(Homogeneous);
② 不同的列可出自同一个域,其中的每一列称为一个属性,不同的属性要给予不同的属性名;
③ 列的顺序无所谓,列的次序可以任意交换;
④ 任意两个元组的候选码不能相同;
⑤ 行的顺序无所谓,行的次序可以任意交换;
⑥ 分量必须取原子值,这是规范条件中最基本的一条;
2.1.2. 关系模式
什么是关系模式
关系模式(Relation Schema)是型
关系是值
关系模式
是对关系
的描述
定义关系模式
- R(U,D,DOM,F)
- R 关系名
- U 组成该关系的属性名集合
- D 属性组U中属性所来自的域
- DOM 属性向域的映象集合
- F 属性间的数据依赖关系集合
关系模式通常可以简记为 R (U) 或 R (A1,A2,…,An)
- R: 关系名
- A1,A2,…,An : 属性名
注:域名及属性向域的映象常常直接说明为属性的类型、长度
2.1.3. 关系模式和关系的对比
- 关系模式
对关系的描述
静态的、稳定的 - 关系
关系模式在某一时刻的状态或内容
动态的、随时间不断变化的
关系模式和关系往往统称为关系
在数据库学科中可以把关系模式理解为表的结构、属性之间的关系、约束条件,把关系理解为二维表
2.1.4. 关系数据库
关系数据库
在一个给定的应用领域中,所有关系的集合构成一个关系数据库关系数据库模式
包括
若干域的定义;
在这些域上定义的若干关系模式;关系数据库
的·型
·与值
关系数据库的型
:关系数据库模式
, 对关系数据库的描述。
关系数据库的值
: 关系模式在某一时刻对应的关系的集合
,简称为关系数据库2.2. 关系操作、关系完整性、关系代数
2.2.1. 关系操作
2.2.2. 关系完整性
关系完整性旨在确保数据库中的数据保持一致性和准确性
- 实体完整性和参照完整性:
关系模型必须满足的完整性约束条件;
称为关系的两个不变性
,应该由关系系统自动支持; - 用户定义的完整性:
应用领域需要遵循的约束条件,体现了具体领域中的语义约束 ;
实体完整性
实体完整性确保数据库表中的每一行都有一个唯一的标识符,即主键。主键不能包含空值(NULL),并且在整个表中必须唯一。
参照完整性
参照完整性确保外键值在参照表中是有效的,即外键必须匹配参照表中的某个主键值,或为空(如果允许空值)。
考虑两个表 Students
和 Enrollments
:
Students
表:
StudentID | Name |
---|---|
1 | Alice |
2 | Bob |
Enrollments
表:
EnrollmentID | StudentID | Course |
---|---|---|
1001 | 1 | Math |
1002 | 2 | Science |
StudentID
是Students
表的主键。Enrollments
表的StudentID
列是外键,参照Students
表的StudentID
。
确保 Enrollments
表中的每个 StudentID
都存在于 Students
表中。比如,不能在 Enrollments
表中插入 StudentID
为 3 的记录,因为 Students
表中没有 StudentID
为 3 的学生。
外键 (Foreign Key):在数据库中,外键是指一个表中的字段,它引用了另一个表的主键。外键用于建立表之间的关系,确保数据的一致性和完整性
用户定义的完整性
用户定义的完整性是根据具体业务需求定义的约束。这些约束可以是任意复杂的规则,通常通过 CHECK 约束、自定义触发器等实现。
考虑一个 Employees
表:
EmployeeID | Name | Age | Salary |
---|---|---|---|
1 | John | 30 | 50000 |
2 | Jane | 25 | 60000 |
假设业务规则规定员工的薪水必须大于 30000 且小于 100000。
可以通过 CHECK 约束来实现:
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
Name VARCHAR(100),
Age INT,
Salary DECIMAL(10, 2),
CHECK (Salary > 30000 AND Salary < 100000)
);
这确保了任何插入或更新到 Employees
表的记录都符合薪水在 30000 到 100000 之间的规则。
2.2.3. 关系代数
关系代数运算符
交、差、并、笛卡尔积、选择、投影、连接、除、与、或、非…
传统集合运算
专门的关系运算
左外连接
右外连接
外连接