关系数据的问题

一个关系模式应当是一个五元组
R (U , D, DOM, F )
R 是元组的语义
U是一组属性
D是U的所有域
DOM是属性到域的映射
F是U上的一组数据以来
D通过DOM映射到U
而关系模式在设计模式中可视为一个三元组
R
U上的一个关系r满足F的时候,则称r为关系模式上的一个关系
有两种最重要的数据依赖,分别是函数依赖和多值依赖。

函数依赖

第一范式 1NF

当一个二维表中每个分量都是不可分的数据项,则成这个条件的关系模式属于第一范式

image.png
在表6.1中,存在一组函数依赖
image.png
即通过学号确定系,再通过系和学号共同确定姓名
但这样的关系模式有如下问题:

  1. 数据冗余
  2. 更新异常
    1. 每次更新数据的时候都需要更新多条
  3. 插入异常
    1. 如果一个系刚刚成立时没有学生,则说明这个系不可能插入到该表中
  4. 删除异常
    1. 如果学生毕业后,删除学生的时候也会将系信息也删除

所有一个好的模式应该不会出现上述问题

规范化

函数依赖的问题
当通过一个函数确定另一个函数则是函数依赖。
如果通过x能确定y,但是不能通过y确定x,则说明是非平凡的函数依赖
非平凡的函数依赖(正常函数)
通过x确定y,通过y也能确定x,说明是一个x=y,是平凡函数
x是自变量,则称x是决定因素
在R(u)中,X->Y,但对于X的任意一个真子集X‘都有X’->Y,也就是一个一对一关系,则称
Y对X完全函数依赖,
否则则成Y对X部分函数依赖。
如果通过多步传递确定,则称之为X传递函数依赖

超码是可以重复的,但是他能确定实体。
候选码:不重复
主码:候选码的一个
主属性:候选码的属性
不在候选码的属性里为非主属性
所有的属性都是码,称为全码
如果U部分依赖K,则K为超码

在ER关系中,实体之间的关系使用主码和外码连接。

第二范式 2NF

若R是第一范式,每一个非主属性完全依赖于任意一个候选码,则称为是第二范式
也就是通过一个候选码能确定任意一个元组,则满足第二范式

第三范式 3NF

一个关系是第二范式,且不传递依赖任何码,则是第三范式

BCNF

每一个决定因素都包含码,则为BCNF

多值依赖