# 前言

以本篇记录学习数据库第六章,关系数据理论章节的内容

# 问题的提出

# 关系模式的表示

关系模式主要由五部分组成,一个五元组:R (U,D,DOM,F).

  1. R 是关系名
  2. U 是一组属性
  3. D 为属性组中的属性的域
  4. DOM 为属性到域的映射
  5. F 为属性组 U 上的一组数据的依赖

注:

  • 由于 D,DOM 与模式设计关系不大,因此本章堪为三元组 R<U,F>
  • 当且仅当 U 上的一个关系 r 满足 F 时,r 称为关系模式 R<U,F> 的一个关系
  • 作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个关系的关系模式就属于 第一范式

数据依赖:

是一个关系内部属性与属性之间的一种约束条件,是通过属性间的值的相等与否体现出来的数据间的相互关系

数据依赖的主要类型

  • 函数依赖(简记 FD)
  • 多值依赖(简记 MVD)

函数依赖的缺点

  • 数据冗余
  • 更新异常
  • 插入异常
  • 删除异常

一个好的模式应该尽量减少或避免以上的缺点

# 规范化

# 函数依赖

设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于x”,记作X+Y。
对于X中的全部属性的集合才能退出Y的称为Y的完全函数依赖,对于X中只要取部分就可以唯一确定Y的叫做部分完全依赖
函数依赖具有传递性,如果X,Y是非平凡函数依赖,且Y函数决定于Z,则可称Z对X传递函数依赖

#

码的关系模型中的一个重要概念

定义:

  • 可以唯一确定一个元组的属性或属性组叫做候选码(该属性是主其他属性的完全依赖)
  • 与上一个定义相对应的码是超码,该属性组是其他属性的部分完全依赖
  • 当一个关系模型中有多个候选码的时候选择其中一个作为主码

主属性与非主属性

  • 主属性 是包含再 任何一个候选码 中的属性

  • 非主属性 不包含在任何码中的属性(除了主属性都属于非主属性)

全码 一个表的全部属性是码就叫全码

外码 , 关系模式 R 中属性或属性组 X 并非 R 的码,但 X 是另一个关系模式的码,则称 X 是 R 的外部码 (Foreign key) 也称外码

# 范式

image-20230105161147908

范式是符合某一种级别的关系模式的集合 。关系数据库中的关系必须满足一定的要求,满足不同程度的要求为不同的范式(简单的理解,范式就是一种规则)

范式的要求由低到高分为第一范式,第二范式,第三范式,BC 范式,第四范式,第五范式(其中 BC 范式是第三范式的一个补充完善,到底 BC 范式要求一般就称该数据库是比较优化的)

规范化是指一个低级的范式的关系模型,通过模式分解变为高级别的范式

# 1NF

每一个属性都是最小单元不可再分的属性

# 2NF

首先要满足第一范式,并且每一个非主属性都 完全函数依赖于任意一个候选码 ,称为第二范式

# 3NF

首先满足第一和第二范式,若 R 中不存在这样的码 X,属性组 Y 以及非主属性 Z,三者 不存在传递函数依赖

# BCNF

对第三范式的一个修改,或是说是一种扩充。

首先满足第一范式,当 X 函数依赖于 Y 这 X 必定含有码 (每一个决定因素都包含码)

性质:

  • 所有的非主属性都完全函数依赖于每个候选码
  • 所有主属性都完全函数依赖于每一个不包含它的候选码
  • 没有任何属性完全函数依赖于非码的任意一组属性

# 多值依赖

与函数依赖相对应,一个属性无法唯一确定另一个属性

这样的缺点:

  • 数据的冗余度大
  • 增加操作复杂度
  • 删除操作复杂
  • 修改操作复杂

设 R (U) 是属性 U 上的一个关系模式,X,Y,Z 是 U 的子集,并且 Z=U-X-Y。关系模式 R (U) 中多值依赖 X->->Y 成立,当且仅当 R (U) 的任一关系 r,给定的一对 (x,z) 值,有一组 Y 的值,这组值仅仅决定于 x 值而与 z 无关。

X->->Y, 而 Z 为空,这称为平凡的多值依赖否则为非平凡

# 4NF

属于第一范式,对于 R 的每个非平凡多值依赖 X->->Y (Y 不包含于 X),X 都含有码,则称为 4NF

# 模式的分解

无损连接性,保持函数依赖