数据库原理
数据库基本概念
定义
数据库(DataBase)是长期存储在计算机的、有组织的、可共享的、数据集合。
数据库管理系统
DBMS,对数据进行定义、存储、操作控制管理等。
数据库系统
DBS,针对某种应用而开发的信息管理系统。
事物
transaction,指一个或一组数据库操作。
事物处理器
有如下一些任务:记日志、并发控制、消除死锁
ACID
事物有如下特性
A - 原子性 C - 一致性 I - 独立性 D - 持久性
关系数据库设计
函数依赖
一个函数依赖是指两个元组在满足属性A1…An时,也在B1…Bm上满足,并且这得是一个单一映射。
键
是一个集合,这个集合里面的属性能够决定一个元组,且该集合的真子集不能决定元组。
主键
当键多于一个时,需要规定一个作为主键
超键
就是键集合的超集
函数依赖规则
对于函数依赖(下文简称FD),有两点重要规则。
- A->B, B->C => A -> C
- A1…Am -> B1…Bn => A1…Am -> B1, A1…Am -> B2, … , A1…Am -> Bn
平凡FD
对于A1…An->B1…Bm,如果说{B1…Bm} {A1…An},为简化我们记为A->B, BA,则有A->B-A
闭包
- 对{A1…Am}的构造过程,首先对于一个R的所有FD进行分解,使得每个FD右边只有一个属性,初始化X集合为{A1…Am},不断重复2.
- 如果有FD左边元素在X中,则如果右边元素不在X中,将其加入X
- X即为{A1…Am}的闭包
例子
闭包和键
闭包A包含了R所有的属性当且仅当A是集合的超键,这个证明想想就会。
检验A是否为R的超键,可以看闭包A是否包含R的所有属性,如果想看是否为键,则去掉A中任一一个属性,是否仍能包含所有属性。
基本集
给定R的一个FD的集合为S,则与S等价的集合称为S的基本集。
最小基本集
- 所有FD的右端只有一个元素
- 如果任一FD从集合中移除,则不再是一个基本集
- 如果对任一FD移除左端的某几个元素,结果也不再是基本集
函数依赖投影
关系数据库模式设计
异常
-
冗余
信息在多个元组中重复
-
更新异常
不能更新所有对应的值
-
删除异常
删除某个值时删除了不应该删除的信息
分解
分解就是把一个关系模式转换为等价的多个关系模式
BCNF
分解的目的是将一个关系替换为多个不存在异常的关系,即在一个条件下不存在之前的异常,这个条件就是BC范式。
关系R属于BCNF当且仅当,R中的非平凡FD A->B成立(非平凡就是BA)。
也就是说每个非平凡FD的左边必须包含键。
当然了,如果一个关系R没有非平凡FD,他一定遵守BCNF的。
分解为BCNF
这有一个算法
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 X Mεl0n | 随手记!