关系数据库理论(二)

关系数据库理论(二)

范式

定义

  • 范式是符合某一种级别的关系模式的集合。定义的是规范。

种类

  • 第一范式 (1NF)
  • 第二范式 (2NF)
  • 第三范式 (3NF)
  • BC范式 (BCNF)
  • ……

联系

低级别的范式包含高级别的范式~

规范化

一个低级别范式的关系模式,通过模式分解转化为若干高一级范式的关系模式的集合 的过程。

第一范式 (1NF)

定义

如果一个关系模式R的所有属性都是不可分的 基本数据项,则R∈1NF。

意义
  • 第一范式是对关系模式的最起码的要求。不满 足第一范式的数据库模式不能称为关系数据库。
  • 但是满足第一范式的关系模式并不一定是一个 好的关系模式。我们需要更细致的规范。

第二范式 (2NF)

引例

关系模式 SLC(Sno, Sdept, Sloc, Cno, Grade) ,Sloc为学生住处,假设每个系的学生住在同一 个地方。

FD(函数依赖):

​ (Sno, Cno) f->Grade

​ Sno -> Sdept

​ (Sno, Cno) -> Sdept

​ Sno -> Sloc

​ (Sno, Cno) -> Sloc

​ Sdept -> Sloc

SLC:

SnoSdeptSlocCnoGrade
分析
  • SLC的码为(Sno, Cno)。

  • 非主属性Sdept和Sloc部分函数依赖于码(Sno, Cno)

  • 插入异常

    假设Sno=0121,Sdept=IS,Sloc=N 的学生还未选课,因课程号是主 属性,因此该学生的信息无法插入SLC。

  • 删除异常

    假定某个学生本来只选修了3号课程这一门课。现在因身体不适,他连3 号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的 整个元组都要删除。

  • 数据冗余度大

    如果一个学生选修了10门课程,那么他的Sdept和Sloc值就要重复 存储了10次。

  • 修改复杂

    如学生转系,在修改此学生元组的Sdept值的同时,还可能需 要修改住处(Sloc)。如果这个学生选修了K门课,则必须无遗 漏地修改K个元组中全部Sdept、Sloc信息。

  • 原因

    Sdept、 Sloc部分函数依赖于码。

  • 解决方法

    SLC分解为两个关系模式,以消除这些部分函数依赖。( 关系模式分解将在(四)中详细写明 )

    SC(Sno, Cno, Grade)

    SL(Sno, Sdept, Sloc)

定义
  • 若关系模式R∈1NF,并且每一个非主属性都 完全函数依赖于R的码,则R∈2NF。
作用及缺陷
  • 采用投影分解法将一个1NF的关系分解为多个2NF的关 系,可以在一定程度上减轻原1NF关系中存在的插入 异常、删除异常、数据冗余度大、修改复杂等问题。
  • 将一个1NF关系分解为多个2NF的关系,并不能完全消 除关系模式中的各种异常情况和数据冗余。

3NF

引例
  • 2NF关系模式SL(Sno, Sdept, Sloc)中:

    • 函数依赖:

      Sno -> Sdept

      Sdept -> Sloc

      Sloc 传递函数依赖于 Sloc 。

  • 解决方法:

    • 采用投影分解法,把SL分解为两个关系模式,以消除传递函数 依赖:

      SD(Sno, Sdept)

      DL(Sdept, Sloc)

定义
  • 关系模式R 中若不存在这样的码X、 属性组Y及非主属性Z(Z 不包含于 Y), 使得X-> Y,Y -> Z,成 立, Y -> X,则称R ∈ 3NF。

  • 即:若R∈3NF,则R的每一个非主属性既不部分函数依赖于 候选码也不传递函数依赖于候选码。

    作用及缺陷

    将一个2NF关系分解为多个3NF的关系后,并不能完全消 除关系模式中的各种异常情况和数据冗余。

BCNF

定义
  • 设关系模式R∈1NF,如果对于R的每个 函数依赖X -> Y,若Y不属于X,则X必含有候选码,那么 R∈BCNF。

  • 即:若R∈BCNF

    • 每一个决定属性集(因素)都包含(候选)码。
    • R中的所有属性(主,非主属性)都完全函数依赖于码。
    • R∈3NF.
性质
  • 所有非主属性都完全函数依赖于每个候选码。
  • 所有主属性都完全函数依赖于每个不包含它的 候选码。
  • 没有任何属性完全函数依赖于非码的任何一组 属性
例子

在关系模式STJ(S,T,J)中,S表示学生,T表示教 师,J表示课程。

(S,J) -> T,(S,T) -> J,T -> J

STJ∈3NF (S,J)和(S,T)都可以作为候选码 S、T、J都是主属性

STJ不属于BCNF T -> J,T是决定属性集,T不是候选码

解决方法:将STJ分解为二个关系模式:

ST(S,T) ∈ BCNF, TJ(T,J)∈ BCNF

多值依赖

PS:多值依赖以及第四范式笔者正在寻找更恰当的描述方式,找到之后会第一时间更新。

第四范式

规范化基本步骤

  1. 1NF 消除非主属性对码的部分函数依赖。
消除决定属性集 非码 的非平凡函数依赖
  1. 2NF 消除非主属性对码的传递函数依赖。
  2. 3NF 消除主属性对码的部分和传递函数依赖。
  3. BCNF 消除非平凡且非函数依赖的多值依赖。
基本思想
  • 消除不合适的数据依赖的各关系模式达到某种程度的“分 离”。
  • 采用“一事一地”的模式设计原则。
  • 所谓规范化实质上是概念的单一化。
  • 规范化程度高不等于关系模式好,在实际应用中我们常常会在实际需求与规范化中做 trade off。笔者认为,这个妥协的过程广泛地存在于工程应用中。
  • 在设计数据库模式结构时,必须对现实世界的实际情况和用 户应用需求作进一步分析,确定一个合适的、能够反映现实 世界的模式。
  • 规范化过程可以在其中任何一步终止。
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值