03.数据库系统

大纲

03.数据库系统

1.数据库模式

1.1三级模式-两级映射

  • 内模式:按照什么样的格式去存储到物理数据库,与物理数据库直接打交道
  • 概念模式:就是我们平时用的数据库的表
  • 外模式:就类似是视图,按照需求展示一部分数据出去,例如用户 登录展示用户名,并不把密码返回去显示
       安全且灵活,表的关系拆分(概念模型)变了,还是可以整合成视图回显回去(外模式)
  • 外模式-概念模式映射:就是表和视图的映射关系,只要表发生了变化,直接改映射不需要改应用程序
  • 概念模式-内模式映射:数据库存储的格式改变了,就改变映射即可,应用程序不需要去修改

03.数据库系统

1.2数据库的设计

概念结构设计,ER模型为代表,跟物理数据库没啥关系
03.数据库系统

2.ER模型

画ER一图般都是先画局部的,实体(长方形)和属性(圆形)
03.数据库系统
03.数据库系统
不同的抽象,例如老师本身是一张表,但是在表的表确是一个字段
关系模式,一个实体(即一张表)就是一个关系模式
  • 1对1关系模式,是2个
  • 1对多关系模式,也是2个
  • 多对多,有个中间表,所以是关系模式是3个

反正多对多中间的联系,不管关联多少个表,都是在关联表放主键之类,关联关系只有一个,就只有一个表
一个表对应一个关系模式
03.数据库系统

3.关系代数和元组演练

选择题考的多,且记住数字表示列,从1开始,从左到右
  • 并,交,差,(就是我们平时的并集,交集)
  • ,例如(s1-s2,就是s1有的,s2没有的),做法就是,将s1中存在的公共部分删除,剩下的s1部分就是结果
  • 投影就是(select)那些列 ,选的是列,投影表达式1,2跟按照从左到右,选字段是一样的结果
  • 选择就是(where),满足where条件的  选的是行,选择也有按照序号的写法,1就是第一例
  • 笛卡尔积乘积
  • 连接操作(也就是自然连接),将字段一样的只保留一个
  • 笛卡尔积并不会去掉字段
特别注意笛卡尔积和连接
连接的时候没有写条件,自然连接,默认将相同字段的进行连接,去掉重复列
03.数据库系统

考试考连接和笛卡尔积,投影,用数字代表列,记住自然连接,去掉列,笛卡尔积不去掉
所以笛卡尔积,相同列,选第一个选中
03.数据库系统
03.数据库系统

03.数据库系统

元祖就是根据连接后,满足连接条件的条数

4.规范化理论

选择题考的多

4.1函数依赖

给定一个数,能根据表达式,能出另外一个唯一的值,就是函数依赖
y=x的2次方,但是y不能确定x,因为x可以等于1或者 -1
03.数据库系统

  • 1. 函数依赖:A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖于A
     例如:学号-->姓名。 (学号,课程名称) --> 分数
  •  2. 完全函数依赖:A-->B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性值。
     例如:(学号,课程名称) --> 分数
  • 3. 部分函数依赖:A-->B, 如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。
     例如:(学号,课程名称) --> 姓名   
  •  4. 传递函数依赖:A-->B, B -->C 如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称 C 传递函数依赖于A
     如果A和B是等价关系,就不存在依赖
     例如:学号-->系名,系名-->系主任
  • 5. :如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码
     例如:该表中码为:(学号,课程名称)
     * 主属性:码属性组中的所有属性(候选键是)
     * 非主属性:除过码属性组的属性  (除了候选键的,例如性别。。)

4.2规范化理论的价值与用途

 价值和用途,就是去解决下面出现的问题
  • 数据冗余  
    就是没有分表,将数据都存进去了,例如在学生表,有学生所在系的的系名称,这样每次插入一条数据,都会插    入系的名臣,造成了冗余
  • 更新异常
   一样,没分表,更新系名,没更全部,更了几个,其他的没有更
  • 插入异常
  就是冗余的数据,例如学生表有系名,例如我只想先把系名例如进去,这是不行的,录不了,因为学生主键不能    为空 
  • 删除异常
     例如你把放在用户这里,删除了用户,把系也删除了,这是不对的
03.数据库系统

4.3 求候选关键字 (重点)

  • 超键,可能存在冗余数据,超健就是部分函数依赖
  • 候选键不是部分函数依赖的函数依赖的,存在多个
  • 主键只有一个
03.数据库系统

03.数据库系统
图示法找候选键(候选码)
  • 入度为0,就是箭头指向这个节点的线为0,从这个点出发,能走遍全部节点,说明是候选键
当一个节点不能走遍,全部没接着就是多个节点组合,才是候选键
出度就和入度相反
  • 没有入度为0的,找有入度和出度的节点,看哪个能走全部,记住节点是例如 A和B,哪个节点和哪个节点
  • AB是组合关键,A和B是分别一个关键字
03.数据库系统
如下图,sj的组合组件,确定全部
还有st的,部分函数依赖,也能走全部
所以所有候选就是 ST,SJ,所以这里stj都是主属性,没有非主属性
03.数据库系统

4.4.范式(必考)

03.数据库系统

4.4.1第一范式

03.数据库系统

4.4.2第二范式

联合主键,存在部分函数依赖
03.数据库系统

4.4.3第三范式

进行外键的添加,分表,就是第三范式
03.数据库系统

4.4.4 BC范式

03.数据库系统
03.数据库系统

4.5 模式分解 (重点)

  • 保持函数依赖分解,分解前什么样,分解后也是什么样
  • 无损分解,就是分解后,还能通过连表的方法得到一样效果
03.数据库系统
无损分解文字说明
03.数据库系统


模式关系有包含用a,没有包含用b
b23 代表第二行,没有拥有第三列字段

4.5.1无损分解

1.图表法,看图连表,能解除另外一个的,将裂上的b改为a,其实很简单的,就是连表的另外一种表达
分解完,有一行全部是a,说明是无损,已经还原
03.数据库系统
03.数据库系统
2.公式法
公式法,适用于1分为2的,其他的不适用
  • 先求分解的两个资源的交集
  • 接着求资源1-资源2
  • 资源2-资源1
交集结果分别指向两个差的结果跟原来给出来的关系比较在里面的就满足无损分解
所以下面第一个是
第二个不是
03.数据库系统

4.6反规范化

03.数据库系统

5.并发控制

03.数据库系统

5.1 事务和读写问题

事务的特性
  ACID
  • 原子性:事务里面的操作单元不可切割,要么全部成功,要么全部失败
  • 一致性:事务执行前后,业务状态和其他业务状态保持一致.
  • 隔离性:一个事务执行的时候最好不要受到其他事务的影响
  • 持久性:一旦事务提交或者回滚.这个状态都要持久化到数据库中
写问题
丢失更新:就是例如开两个事务,另一个事务没有提交,接着又开了另外一个事务,然后,前一个提交了,后一个也提交了,这样后一个就会覆盖前一个的,如下图最后结果10-8 = 2
03.数据库系统

读问题
  • 脏读:在一个事务中读取到另一个事务没有提交的数据
  • 不可重复读:在一个事务中,两次查询的结果不一致(针对的update操作)  修改
  • 虚读(幻读):在一个事务中,两次查询的结果不一致(针对的insert操作) 条数

03.数据库系统


5.2 *协议 (重点)

x锁,写锁   加了读锁,别人还可以加读锁,不能加写锁,加上了写锁,不能在上面加任何的锁
s锁,读锁,
锁的协议,对应隔离级别
03.数据库系统

03.数据库系统

6.数据库完整性约束

  • 实体完整性约束,就是加主键
  • 参照完整性,就是加外键,实际的外键,添加市例如员工外键乱填,就报错。
         就是说外键可以为空和正确存在的外键
  • 用户自定义完整性,例如年龄,就不能输入负数,例如 0<a<200
这些完整性提高数据的可靠性,不应该让他录入
这些完整性满足一般要求,更高的,我们编写触发器
03.数据库系统

7.数据库的安全

03.数据库系统


8.数据库的备份

8.1备份

冷备份,不能选表来备份
03.数据库系统

跟数据库的量进行区分
  • 差量是根据上一次完全备份
  • 增量备份,备份上一次备份
增量备份时根据上一次的,所以备份数据少,数据快,但是每次备份前,都要先还原原先完全的,在完全基础上
一次一次叠加增量(所以增量备份熟读快,但是还原相当麻烦)
差量备份,是根据上一次完全备份的,例如周1,2,3用增量,4用差量,恢复时,先恢复完全,
接着恢复差量,直接一步到位,比增量好很多
03.数据库系统

转储其实就是备份·
海量就是全部
03.数据库系统

当我们当天出现问题时,但是当天的增量还没有进行备份,所以就要靠日志文件来
03.数据库系统

8.2恢复和故障

03.数据库系统

7.分布式数据库

03.数据库系统


8.数据仓库和数据挖掘

  • 数仓针对主题的,例如商品
  • 数据库是针对应用和业务的
稳定性是,进入了数仓,不再修改和删除

数据的清洗(清理),即是对数据格式的统一
刷新就是定期放入新的数据
数据集市,就是一步步的建立,先创建部门集的数据仓库,再创建企业级
OLAP服务器是专门做分析处理工作

数据挖掘是可以挖到未知的特性
03.数据库系统

8.1数据挖掘分类

03.数据库系统

9.大数据

03.数据库系统
03.数据库系统





03.数据库系统

上一篇:ClickHouse MaterializeMySQL 数据库引擎


下一篇:ICPC Southeast USA 2020 Regional Contest Problem N Triangular Collection