第五章 数据库
1 数据库系统概述
1.1 基本概念
-
数据(data):描述事物的符号记录称为数据,数据室数据系统重存储的基本对象
-
数据库(database,DB):数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合
-
数据库管理系统(DataBase Management system DBMS):数据库管理系统是位于用户和操作系统之间的一层数据管理软件,用于建立、使用和维护数据库
功能(背):
- 数据定义
- 数据组织、存储、管理
- 数据操纵
- 数据库的事务管理和运行管理
- 数据库的建立和维护
-
数据库系统(DataBase System):由数据库、数据库管理系统(及其应用开发工具)、应用程序、数据库管理员(DataBase Administrator,DBA)组成的存储、管理、处理和维护数据的系统
1.2 数据库的特点
-
数据的结构化
-
数据的共享性、冗余度低和易扩充
可以被多个用户、多个应用共享使用,数据共享可以避免数据不相容性和不一致性
-
数据独立性高
物理独立性和逻辑独立性
-
数据由数据库管理系统统一管理和控制
(1)数据的安全性保护
(2)数据的完整性保证
(3)并发控制:多个用户并发进程同时读写数据库,对并发操作加以控制和协调
(4)数据库恢复:数据库管理系统将数据库从错误状态恢复到某一已知的正确状态(完整状态/一致状态)的功能
1.3 数据库系统的结构
1.3.1 数据库系统模式的概念
- 型(type):对某一类数据的结构和属性的说明
- 值(value):型的一个具体赋值
- 模式:全体数据的逻辑结构和特征描述,仅涉及型
1.3.2 数据库系统的三级模式结构
-
模式
模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,不涉及数据的物理存储细节的硬件环境,与具体的应用程序、所使用的应用开发工具及高级程序语言设计无关。
一个数据库只有一个模式
-
外模式
外模式也称为用户模式或子模式,局部数据的逻辑结构和特征描述,是数据库用户的数据视图
外模式通常是模式的子集,一个数据库可以有多个外模式
-
内模式
内模式也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
一个数据库只有一个内模式
2 数据模型
数据库系统的核心和基础
2.1 数据模型的组成要素
- 数据结构:对系统静态特征的描述,包括层级模型、网状模型和关系模型
- 数据操作:对数据库中的对象实例进行的操作,包括增删查改
- 数据的完整性约束条件:实体完整性、参照完整性、用户自定义完整性
2.2 数据库模型的分类
2.2.1 概念模型
基本概念:
-
实体:客观存在并互相区别的事物及事物之间的联系,如一个学生、一门课程、学生的一次选课
-
属性:实体所具有的某一特征,如学生的学号、姓名
-
码:唯一标识实体的属性集,如学号、工号
-
域:属性的取值范围,如成绩的域为[1,100]
-
实体型:实体名及其属性名的集合,如学生(学号、姓名、性别)
-
实体集:实体的集合,如全体学生
-
联系:实体域实体之间,或实体与其属性之间的关系
一对一(1:1):
一对多(1:n):
多对多(m:n):
E-R图(实体-联系图)
示例:
- 实体使用矩形
- 属性使用椭圆形
- 联系使用菱形
- 菱形无向边上标注联系的类型(1,m,n)
2.2.2 逻辑模型(※背诵)
满足条件 | 优点 | 缺点 | |
---|---|---|---|
层级模型 | ①有且仅有一个节点无父结点,该结点为根结点 ②其他节点有且仅有一个父结点 | ①数据结构简单清晰 ②查询效率高 ③提供了良好的完整性支持 | ①节点之间具有多对多的联系时不适用层次模型 ②具有多个父结点是,不易使用层级模型 ③查询子女结点必须通过父结点 ④层次命令趋于程式化 |
网状模型 | ①允许一个以上的结点无父结点 ②一个节点可以有多于一个的父结点 | ①能更直接地描述现实世界 ②具有良好的性能,存取效率高 | ①结构比较复杂,不利于用户掌握 ②数据定义和操纵复杂,不易使用 ③记录之间的联系通过存取路径实现,加重了编写应用程序的负担 |
关系模型 | ①建立在严格的数学概念的基础上 ②概念单一,结构简单清晰,用于易懂易用 ③具备更高的数据独立性和更好的安全保密性 | ①存取路径对用户隐蔽,查询效率较低 ②增加了开发数据库管理系统的难度 |
2.2.3 物理模型
数据库在系统层中的实现
3 关系型数据库
3.1 关系的完整性
-
实体完整性:关系R的主属性不能存在空值
-
参照完整性/引用完整性:描述关系模式中实体与实体间的关系
举例:删除主表中外键所在列的数据,必须先删除子表对应的数据,否则将破坏参照完整性
-
用户定义完整性:针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足语义要求,由应用环境决定
3.2 关系运算
-
并“∪”
R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R∪S=\{t|t∈R∨t∈S\}R∪S=\{t|t∈R∨t∈S\} R∪S={t∣t∈R∨t∈S}R∪S={t∣t∈R∨t∈S}
-
交“∩”
R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R∩S=\{t|t∈R∧t∈S\}R∩S=\{t|t∈R∧t∈S\} R∩S={t∣t∈R∧t∈S}R∩S={t∣t∈R∧t∈S}
- 差“-”
R − S = { t ∣ t ∈ R ∨ t ∉ S } R − S = { t ∣ t ∈ R ∨ t ∉ S } R−S=\{t|t∈R∨t∉S\}R−S=\{t|t∈R∨t∉S\} R−S={t∣t∈R∨t∈/S}R−S={t∣t∈R∨t∈/S}
- 笛卡尔积“x”
R × S = { t ∣ t ≤ ( t n , t m ) ∧ t n ∈ R ∧ t m ∈ S } R×S=\{t|t≤(t^n,t^m)∧t^n∈R∧t^m∈S\} R×S={t∣t≤(tn,tm)∧tn∈R∧tm∈S}
- 投影(Projection)
投影运算是从关系的垂直方向进行运算,在关系 R 中选出若干属性列 A 组成新的关系,记作 πA®πA®,其形式如下:
π A ® = { t [ A ] ∣ t ∈ R } π A ® = { t [ A ] ∣ t ∈ R } πA®=\{t[A]|t∈R\}πA®=\{t[A]|t∈R\} πAR◯={t[A]∣t∈R}πAR◯={t[A]∣t∈R}
- 选择(Selection)
选择运算是从关系的水平方向进行运算,是从关系 R 中选择满足给定条件的元组,记作 σF®σF®,其形式如下:
σ F ® = { t ∣ t ∈ R ∧ F ( t ) = T r u e } σF®=\{t|t∈R∧F(t)=True\} σFR◯={t∣t∈R∧F(t)=True}
-
连接(Join)
连接(join)就是把两个表中的行按照给定的条件进行拼接而达成新表。
等值连接
两个关系中将进行比较的属性组的值相等的数据相连,若比较的是相同的属性组,不会去重
自然连接
特殊的等值连接,两个关系表
中进行比较的分量必须是相同的属性组列名
,并且在结果集中将重复属性列去掉
4 数据库设计
4.1 函数依赖
设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等而在Y上的属性值不相等,则称X函数确定Y或Y函数依赖于X ,记作X→Y,X称为决定因素,即唯一的X确定Y
如果存在X→Y,且Y→X,记作X←→Y
如果X→Y,且Y↛ X,记作X↛ Y
- 若Y不是X的子集称为非平凡的函数依赖, Y是X的子集(任意关系必然成立)称为平凡的函数依赖
- 如果X→Y,且X的真子集不函数决定Y,则称为Y对X完全函数依赖,否则称为部分函数依赖
- 传递依赖:Y非平凡函数依赖于X,X非平凡函数依赖于Y,则X→Z
4.2 公理系统
- 自反律
- 增广律
- 传递律
4.3 范式
第一范式(1NF)
符合1NF的关系中每个属性都不可再分
1NF是所有关系型数据库的基本要求,即关系型数据库中的表一定符合1NF
存在数据冗余、插入异常、删除异常、修改异常的问题
插入异常:由于多个主体的属性放在一起,无法单独插入/删除某个主体的属性
修改异常:数据不唯一,修改其中一条数据后其他数据未改变
第二范式(2NF)
若关系模式R属于第一范式,且关系模式R的每个非主属性完全函数依赖于码,则R也属于第二范式。
人话版:在第一范式的基础上,消除非主属性间码的部分函数依赖
解决了数据冗余、更新异常、插入异常和删除异常
第三范式(3NF)
在满足第二范式的基础上,若关系模式中所有非主属性完全函数依赖于码且不传递依赖码,则称R属于第三范式。
满足第二范式不满足第三范式的情况:学生(学号,课程号,系号,系名,系地址),在这个关系模式中,学号可以推出系号,系号推不出学号,系号可以推出系地址,所有学号可以推出系地址。所以不直接决定非主属性系地址。
解决办法:拆成两个关系模式
BCNF范式
在满足第三范式的基础上,若关系模式中主属性完全依赖于码且不传递依赖码,则称R属于BCNF范式
第四、第五范式
https://blog.csdn.net/xiaoxiao_su123/article/details/113514395
4.4 设计步骤(※背诵选择题)
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 编码测试
- 运行维护
5 结构化查询语言SQL
5.1 SQL的功能
- 数据定义功能(DDL):CREATE、DROP、ALTER
- 数据查询功能(DQL):SELECT、FROM、WHERE、GROUP BY
- 数据更新功能(DML):UPDATE、INSERT、DELETE
- 数据控制功能(DCL):GRANT、REVOKE、DENY
5.2 数据类型
- char(n)
- int
- float
- date
5.3 完整性约束
5.3.1 列级完整性约束
- DEFAULT:默认值
- NULL/NOT NULL:是否可空
- PRIMARY KEY:主键
- UNIQUE:单值约束
- REFERENCES<父表><主码>:外键
- CHECK<逻辑表达式>:检查约束,取值限制
5.3.2 表级完整性约束
- PRIMARY KEY
- UNIQUE
- FOREIGN KEY<列名>REFERENCES<父表><主码>
- CHECK