关系数据理论

对数据库中关系的第一范式、第二范式、第三范式等基础理论知识记录说明。

基本概念

函数依赖

一组属性的值可以决定另一组属性的值。$x \rightarrow f(x)$。

非平凡函数依赖:$X\rightarrow Y ;且 Y \nsubseteq X$

平凡函数依赖:$X\rightarrow Y ;且 Y \subseteq X$

完全函数依赖:非主属性完全依赖于主属性,少一个都不能推出。

部分函数依赖:非主属性可以又主属性部分推出得到。

范式

第一范式

一个关系模式R的所有属性都是不可分的基本数据项。

反例:

image-20231202151257178

成绩这一列还能再分,不满足第一范式。

第二范式

满足第一范式基础上,每个非主属性都完全依赖于码。

员工编号 销售日期 销售金额 小组编号 组长名称

这里员工编号和销售日期可以确定一条销售金额,主属性是员工编号和销售日期,但是由员工编号可以推出小组编号和组长名称。小组编号和组长名称是部分函数依赖于码。所以不满足第二范式。

可拆分表:

员工编号 销售日期 销售金额
员工编号 小组编号 组长名称

从第一范式到第二范式就是消除非主属性对码的部分函数依赖

第三范式

满足第二范式的基础上,每个非主属性对码都不传递依赖于R的候选码。

例如:

员工编号 小组编号 组长名称

存在着$员工编号\rightarrow 小组编号$,$员工编号\rightarrow 组长名称$,就有$员工编号\rightarrow 小组编号\rightarrow 组长名称$。存在传递依赖,不满足第三范式。

可拆分表:

员工编号 小组编号
小组编号 组长名称

从第二范式到第三范式就是消除非主属性对码的传递依赖

BC范式

在第三范式基础上,消除主属性对主键的部分和传递依赖。

示例:

歌曲编号 歌曲名称 歌手 ……

这里的歌曲编号、歌曲名称、歌手是候选码(主键),但存在$歌曲名称\rightarrow歌手$的部分依赖,不符合BC范式。

这里第二范式、第三范式都是对非主属性消除部分依赖和传递依赖,BC范式是对主属性消除部分依赖和传递依赖。