数据库系统-3NF(上)-软件设计(二十七)https://blog.csdn.net/ke1ying/article/details/129542499
模式分解 有 保持函数依赖分解 和 无损分解
保持函数依赖分解:分解前有的函数依赖分解之后还存在。
解析:
比如R(A,B,C)关系模式,有函数依赖A->B B->C
R1(A,B) R2(B,C)这种分解则保持了函数依赖。
A和B都在R1中,所以保持了A到B的函数依赖。
B和C都在R2中,所以保持了B到C的函数依赖。
若拆分为R1(A,B)R3(A,C)则没有保持下来函数依赖。
(对于冗余性质的函数依赖不要求保留)
无损分解:可以还原。(无损表示不能还原)
当b12可以用a2替换的时候,b14可以用a4替换的时候,这就代表无损。
并发控制:
事务:原子性、一致性、隔离性、持续性。
并发操作 会出现问题?
丢失更新:两个事务同时更新。
不可重复读:同一个事务里两次读的值不一样,原因是因为另一个事物修改了这个值。
读脏数据: 读的数据被其他事务修改。
为了解决这些问题?
X锁是写锁,S锁是读锁,读锁加上后还能加读锁,写锁加上后不能加任何锁。
一级封锁协议。对事务T在修改数据之前加X锁,直到事务结束才释放。可以防止丢失修改
二级封锁协议。一级封锁协议加上事务T对读取数据之前先加S锁,读完后释放S锁。可以防止脏读数据
三级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。防止丢失修改和脏读重复读
可能发生死锁。
数据库完整性约束:实体完整性约束、参照完整性约束、用户自定义完整性约束。
实体完整性,比如字段不能为null。
参照完整性,参照实体,比如参照员工表的部门,不能乱填写部门。
用户自定义完整性,比如年龄,就不可以负数和大于200。
触发器也可以用脚本来约束。
冷备份 和 热备份。
冷备份指数据库关闭和停止运行状态下备份,文件拷贝下来。
这种优点简单,速度快,维护技术方便,复杂度低,不能指定到表级别,颗粒度大。
热备份指动态备份,利用备份软件在数据库正常运行的情况下,将数据库备份出来。
优点颗粒度细,可以根据表来备份,恢复速度快,但是复杂度高,不能出错,后果很严重,因为热备份在跑业务时候进行,所以不能出错。
完全备份:备份所有数据。
差量备份:仅备份上一次完全备份之后剩下的数据备份下来。
增量备份:备份上一次变化之后的数据。
增量和差量的配合有利于数据的恢复。
静态海量转储:在系统中无法运行事务时进行,每次转储全部数据。
静态增量存储:在系统中无运行事务进行,每次只转储上一次转储后更新过的数据。
动态海量转储:在系统运行对数据库修改或者新增时候,每次转储全部数据。
动态增量转储:在系统运行对数据库修改或者新增时候,每次转储上次转储更新后的数据。
数据仓库 和 数据挖掘
数据库是根据业务 来记录我们需要的数据。
随着时间越来越久,数据越来越多,导致系统越来越慢,以前是把历史数据删掉。
后来把数据存在数据仓库。
数据到数据仓库 会经历 抽取、清理(格式不一致所以清理)、装载、刷新(定期刷新数据进来)。
数据仓库特点就是面向主题,只查询 和插入,不修改。
比如面向商品主题。
OLAP服务器有查询工具,报表工具,分析工具,数据挖掘工具。
大数据至少PB以上,传统的数据是GB或者TB级。
大数据特性:
高性能、高扩展、支持异构环境、易用且放开接口、向下兼容等。