十一 数据库系统

目录

1、数据库模式

2、关系代数

3、规范化理论

4、并发控制

5、数据库完整性约束

6、数据库安全、备份、故障与恢复

7、分布式数据库、NoSQL、性能优化、大数据分区分表


1、数据库模式

三级模式-两层映射

  • 外模式。用户视图、视图级,用户程序调用。
  • 概念模式。基本表。
  • 内模式。物理模式,存储模式,文件级。

外模式和概念模式之间映射,保证逻辑独立性。

概念模式和内模式之间映射,保证物理独立性。

视图

  • 视图优点:简化用户操作,重构数据提供一定的逻辑独立性,数据安全保护,用户以多种角度看待同一数据。缺点:查询之后再展示,效率比较低。
  • 物化视图。实体化视图,会存储数据,更新原始数据时,需更新物化视图。只适合查询较多的数据,修改性较多的不适合物化视图。

数据库设计过程

  • 需求分析。得到数据流图,数据字典,需求说明书。
  • 概念结构设计。得到ER模型。用户数据模型。
  • 逻辑结构设计。关系模型,视图,完整性约束及应用处理说明书。转换规则,规范化理论。
  • 物理设计。硬件,os,聚簇索引。

ER模型

联系类型:

1: 1 一对一

1: n 一对多

n: n 多对多

实体转关系模式

一个实体集至少一个关系模式。

多对多必须转成一个关系模式。

1对多n 可以转为一个关系模型,也可以与n端关系模式合并。

2、关系代数

笛卡尔积 X。属性列数是二者之和。元组行行数是二者乘积。

选择 ∂。现在列是否相等,筛选条件。

投影 π。选择需要的列。

例如: Select 投影 from 表1,表2 where 选择。

自然连接 ▷◁: 属性列二者之和减去重复的列数。元组行数同名属性列取值相等的元素。

自然连接和笛卡尔积转换。先选择(做where),再投影

1、一般任务自然连接性能优于笛卡尔积。

2、尽量先将操作的对象压缩。

3、规范化理论

非规范化关系模式可能存在问题:数据冗余、更新异常、插入,删除异常

函数依赖

  • 主键唯一标识元组的属性集合。可以决定所有其他属性。主键可以是组合。
  • 部分函数依赖:元素依赖主键中的一部分。针对组合主键。
  • 传递函数依赖:。

键概念

  • 候选键:唯一标识元组,且无冗余。就是可以做主键的属性值,可以是组合键。
  • 主键:候选键任选一个
  • 外键:其他关系主键。

如何求候选键?

1、找到入度为0的值,即没其他属性指向它。也就是没在右边出现过的属性

2、如果都没有入度为0的,找中间属性(有入有出)。

候选键包含的属性叫做主属性,其他叫非主属性。

第一范式。属性值都是不可分的原子值。属性不能划分为其他小属性,即是满足一个二维表

第二范式。再上一基础,不存在非主属性对候选键的部分依赖

第三范式。再上一基础,不存在非主属性对候选键的传递依赖

BCNF。每个依赖的决定因素必定包含某个候选码。

分解表拆分

是否保持函数依赖分解。分解之后还能找到之前的函数依赖关系,即可以找到之前的关系模式。

无损分解:可以还原

有损分解:不能还原

无损分解表格法:有一排是勾就是无损分解。

无损连接分解,都是能推所有属性,所以,只要是包涵候选关键字的,都是无损连接。

1、初始表。画出所有属性,根据关系给存在的属性打√。

2、表格中需要相同的那一列开始,作为左侧决定因素,找到对应的关系,如果存在打√。

案例:

反规范化 : 希望牺牲部分规范化提高性能,从规范化设计的回退方法

由于规范化导致数据表过多,虽然减少了数据冗余,但是增加了增删改的效率。根据业务,在表中新增一部分冗余字段,以提高性能。

益处 降低连接操作的需求,降低外码和索引数目,还可以减少表的数目,能够提高查询效率。

技术手段:

  • 增加派生性冗余列(计算总和,平均值)
  • 增加冗余列。(复制某一列数据)
  • 重新组表。多表组合形成一个表。
  • 分割表。水平分割(按照字段行不同的取值放不同表,一年或者10年一个表),垂直分割(按列,不常用的数据重新放一个表)。

出现的问题 : 数据冗余,重复存储浪费了磁盘空间;可能出现数据的完整性问题,还有数据性一致性问题,增加数据维护的复杂度,会降低修改速度

触发器或应用程序解决。

解决一致性的方法主要有三种

1. 使用事物方式(应用程序自己去维护)

2. 使用批处理即定时器。(写个脚本定时去同步,适合数据不实时更新)

3. 使用触发器(数据库触发器可以在修改时自动更新)。

4、并发控制

事务:原子性(要么做,要么不做),一致性(数据一致性),隔离性(事务之间隔离),持续性(修改后数据保持数据持续性)。

并发产生的问题: 丢失更新(修改);不可重复读问题;脏数据读出。

解决方案:

S锁: 读锁,共享锁。

X锁: 写锁,排他锁,独占锁。

读锁可以多个,但是写锁有了之后不能加其他锁。

一级封锁协议:在修改之前加x锁,事务结束后释放,防止丢失修改。

二级封锁协议:一级封锁协议加上读取数据之前加s锁,读完后释放防止丢失修改和读脏数据

三级封锁协议:一级封锁协议加上读取数据之前加s锁,事务结束后释放防止丢失修改和读脏数据,防止数据重复读。

两段锁协议,可以串行化,但可能发生死锁。准备阶段(请求阶段)和提交阶段(执行阶段)。

5、数据库完整性约束

实体完整性主键,唯一且非空

参照完整性引用其他表的主键(外键),其他关系的主键或者为空。

用户自定义完整性约束。check。

触发器

6、数据库安全、备份、故障与恢复

数据库安全:

  • 用户标识和鉴定。主要是身份认证。
  • 存取控制。主要是权限。
  • 密码存储和传输。对远程终端信息用密码传输。加密和摘要。
  • 视图的保护。对视图进行授权。
  • 审计。日志记录,事后审查,可追溯。

数据备份:

冷备份(静态备份):停止状态下,将数据库文件备份下来。

热备份(动态备份):数据库正常状态下,备份数据库。

完全备份:备份所有数据。

差量备份:仅备份上一次完全备份之后变化的数据。

增量备份:备份上一次备份之后变化的数据。

日志文件:对于数据库,先写日志再写数据。

各种备份相互用:全备-增备-增备-差备-增备。还原效率高。

数据库故障和恢复

7、分布式数据库、NoSQL、性能优化、大数据分区分表

分布式数据库

NoSQL

数据库性能优化

大数据

分区分表

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪异的bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值