数据库系统-数据库系统概述

数据库系统

数据库系统概述

1
2
3
DB:按照数据结构来组织,存放和管理数据的仓库
DBMS:是一种操纵和管理数据库的大型软件,用于建立,使用和维护数据库
DBS:应用程序、数据库、数据管理员构成

关系数据库

1
2
3
4
5
6
7
数据模型:层次,网状,关系
关系:主键,候选码,主属性,非主属性,外键

主键只能有一个,属于候选码中的一个
候选码:能够唯一标识一个元组
主属性:任意候选码中的属性都是
非主属性:不属于任意候选码属性中的一个
1
2
3
NULL
is null
is not null
1
2
域完整性、实体完整性、参照完整性是关系模型中必须满足的完整性约束条件
用户自定义完整性:值唯一,[男,女],[1-50]
1
2
3
4
并,交,差,广义笛卡尔积,连接,选择,投影,除

连接就是有条件的广义笛卡尔积
投影就是只要某些列
1
等值链接,自然链接,左外连接,右外连接,外连接

函数依赖

参考

1
2
3
函数依赖:在一个表里面,属性X可以映射到属性Y,也就是说知道了X就能确定Y,称X为决定因素
平凡函数依赖:(SNO,CNO)->SNO,(SNO,CNO)->CNO
非平凡函数依赖:

image-20250416160936640

1
2
3
4
直接举栗子🌰:有一个关系模式S(Sno,Sname,Cno,Grade)

完全函数依赖:如果我想知道某位学生的某一门课的成绩Grade,那我必须得同时知道他的学号Sno和课程号Cno。
但如果我只知道一部分信息,比如他的Sno或者Cno可以吗?答案是不行的!此时称Y[Grade]完全依赖于X[Sno,Cno]。

image-20250416160909166

1
部分函数依赖:如果我想知道某位学生的姓名Sname,那我知道他的学号Sno就可以了。也就是说Y[Sname]只函数依赖于X[Sno,Cno]中的子集x[Sno],此时称Y部分函数依赖于X。

image-20250416160856918

1
2
3
4
直接讲人话🌰:有一个关系模式S(Sno,Sdept,Mname)
如果我知道了一个学生的学号Sno,那我就能知道他所在的系Sdept。(因为理论上一个学生只属于一个系)
如果我知道了某一个系Sdept,那么我就能知道这个系的系主任的姓名Mname。(一个系只有一个正的系主任,别杠,你赢了。)
也就是说,我知道了一个学生的学号Sno,其实我就知道了他所在系的系主任的姓名Mname。但这个过程中,他们是不存在直接函数依赖的,我需要通过系名称Sdept作为一个桥梁去把二者联系起来的。

范式

参考1

参考2

1
2
3
4
5
第一范式1NF:属性不可再切分
第二范式2NF:首先要满足1NF,非主属性完全函数依赖于主键
第三范式3NF:满足2NF基础上,非主属性不传递函数依赖于主键
BC范式:满足3NF基础上,消除主属性对主键的部分函数依赖和传递函数依赖
第四范式:满足BCNF基础上,消除关系中的多值依赖

三级模式结构和两级映像

image-20250416101728772

image-20250416102145741

1
2
3
4
5
外部级模式结构
概念级模式结构
内部级模式结构

二级映像包含:外模式模式映像和模式内模式映像。

数据库设计

1
2
3
需求分析、概念模型设计、逻辑结构设计、数据库物理设计阶段、实施、运行和维护

概念模型:ER图

什么是事务?

1
2
3
4
5
6
7
事务就是用户定义的一系列执行SQL语句的集合, 这些操作要么完全地执行,要么完全地都不执行, 它是一个不可分割的工作执行单元。

事务是一系列数据库操作的集合,这些操作要么全部执行,要么全部不执行。事务必须满足以下四个属性,通常被称为ACID属性(也称为事物的特点):
- 原子性(Atomicity):事务是一个不可分割的操作集合,要么全部执行,要么全部回滚。
- 一致性(Consistency):事务在执行前和执行后数据库的状态必须和它所抽象的现实世界的结果一致。 转账
- 隔离性(Isolation):并发执行的事务之间不能相互干扰。
- 持久性(Durability):事务完成后,它对数据库的修改永久保存