数据库基础——关系数据库设计理论(上)

33 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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)中,包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性