开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情
关系数据库规范化理论是数据库设计的一个理论指南,研究关系模式中各属性之间的依赖关系及其对关系模式性能的影响。
为什么要讨论规范化呢?因为存在以下问题
- 数据冗余问题
- 数据插入问题
- 数据更新问题
- 数据删除问题
关系规范化
规范化是一种科学的方法,通过使用某些规则把复杂的表格结构分解为简单的表格结构
- 可以降低表中的冗余和消除数据操作异常的问题
- 规范化产生满足某些特定规则和表示某些规范形式的表
函数依赖
函数Y=f(X):给定一个X值,都会有一个Y值与之对应。 关系数据库中讨论函数依赖更注重语义上的关系: 省=f(城市)
- 定义:有关系模式R(A1 ,A2 ,…,A n ),X 和Y为 {A1 ,A2 ,…,A n }的子集。如果对于关系R中的任意一个X属性值,都只有一个Y 属性值与之对应,则称X函数决定Y,或Y函数依赖于 X,表示为 X→Y 。函数依赖 省=f(城市)
例:Student(Sno, Sname, Sdept, Sage) Sno→Sname, Sno→Sdept, Sno→Sage
例: SC(Sno, Cno, Grade) (Sno, Cno)→Grade
函数依赖讨论的是属性之间的依赖关系,是语义范畴的概念。 关系模式的属性之间是否存在函数依赖只与语义有关。
例: Student(Sno, Sname, Sdept, Sage) Sno→Sname, Sno→Sdept, Sno→Sage Sname→Sno, Sname→Sdept, Sname→Sage
在关系模式R(U)中,对于U的子集X和Y
- 如果X→Y,但Y不包含于X,则称X→Y是非平凡的函数依赖
- 若X→Y,但Y X, 则称X→Y是平凡的函数依赖
- 如果Y不函数依赖于X,则记作X—/→Y
- 如果X→Y,则称X为决定因子。
- 如果X→Y,并且Y→X,则记作X←→Y
例:关系SC(Sno, Cno, Grade) (Sno, Cno) → Grade (Sno, Cno) → Sno
- 如果X→Y,并且对于X的一个任意真子集X’ 都有 X’ —/→Y,则称Y完全函数依赖于X,记作: X ⎯f → Y
- 如果X’→Y成立,则称Y部分函数依赖于X,记作: X ⎯p → Y
例:有关系模式:SC (Sno,Sname,Cno,Ccredit,Grade)
则函数依赖关系有:
-
Sno→Sname
-
(Sno, Cno)-p→ Sname
-
(Sno, Cno)-f→ Grade p f
-
(Sno, Cno) ? Credi
-
如果X→Y(非平凡函数依赖,并且Y—/→X)、 Y→Z,则称Z传递函数依赖于X。
关系模式中的码
- 候选码:设K为R (U,F)中的属性或属性组,若K→U ,则称K为R的候选码。(K为决定R全部属性值的最小属性组)
- 主码:关系R (U,F)中可能有多个候选码,则选其中一个作为主码
- 全码:候选码为整个属性组。
- 主属性与非主属性:在R (U,F)中,包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性