携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情
1.关系规划化必要性
例如:
那么设计一个关系模式
SLC={Sno,Sname,Sdept,Mname,Cname,Score}
这样的模式存在问题:
比如数据冗余度大:浪费空间,参生数据不一致
插入异常
删除异常
更新异常
那么如何解决这个问题? 这就需要使用信息的某种程度分类,关系分解
原slc可以变成
S={Sno,Sname,Sdept} D={Sdept,Mname} SC={Sno,Cname,Score}
那么为什么会出现这些问题?? 这和数据间的依赖密切相关
如果分离度过高,那么查询效率低下, 如果分离的过低,就会参数上述四个问题
函数依赖
定义: 函数依赖是通过一个关系中属性值的相等与否提醒出来的相互关系,是现实世界属性间互相练习的抽象,是数据内在的性质,是语义的体现。
函数依赖
设R(U)是一个关系模式,U是R的属性集合。X,Y是U的子集 如果R(U)的关系r存在:对于每一个x,y都有唯一值和他对于,则称x函数决定于y,或者y依赖于x
记作x——>y.其中决定x叫属性集,y叫被决定属性值
例如:
(1)根据学号可以确定姓名
(2)一个系若干学生,但是一个学生只能一个系
(3)一个系只有一名主任
(4)根据学生所在系可以确定学生住处
(5)一个学生可以选修多门课程,一个课程可以有多个学生选择
(6)每个学生的每个课程都有成绩
平凡的函数依赖和非平凡函数依赖
在关系秘书R(U,F)里面,对于u子集x,y。如果x->y,但是y不属于x就是非平凡依赖,反之就是平凡依赖
部分完全函数依赖
传递函数依赖
键的形式化定义
闭包
对于给定关系R(U,F),f闭包是由f所逻辑蕴含的所有函数依赖的集合,记作F+。
范式
nf:符合某一种级别的关系模式集合