关系模式满足第二、三范式的求解方法!

一、将非第二范式分解成第二范式

前记:非第二范式-存在非主属性对主键的部分函数依赖。

  • 分解步骤
    1、用组成主键的属性集合的每一个子集作为主键构成一个新的关系模式。
    2、将依赖于这些主键的属性放置到相应的新的关系模式中。
    3、最后去掉只由主键的子集构成的关系模式。

例如:关系(Sno, Sname, Ssex, Sdept, Sloc, Cno, Grade)
对应:(学号,姓名,性别,所在系,宿舍楼号,课程号,成绩)

 分析:因为该关系模式的主键是(Sno,Cno),并且有Sno->Sname,因此Sname部分函数依赖于(Sno,Cno),所以,该关系不满足第二范式。     
 解:将该关系模式分解为如下三个关系模式(**部分表示主键)
     (**Sno**, Sname, Ssex, Sdept, Sloc)
     (**Cno**) //去掉
     (**Sno, Cno**, Grade)
     最后,得到了两个满足第二范式的关系。

二、将非第三范式分解成第三范式

前记:非第三范式-存在非主属性对主键的传递函数依赖。
  • 分解步骤
    1、对于不是候选键的每个决定因子(依赖关系中左边的部分),从关系模式中删去依赖于它的所有属性。
    2、新建一个关系模式,新关系模式中包含原关系模式中所有依赖于该决定因子的属性。
    3、将决定因子作为新关系模式的主键。

例如:(Sno, Sname, Ssex, Sdept, Sloc)中,Sdept不是候选键,但是Sdept->Sloc。所以,Sdept是决定因子,从关系中删去依赖它的Sloc。

新建一个关系模式(**Sdept**, Sloc)。
最后关系模式(Sno, Sname, Ssex, Sdept, Sloc, Cno, Grade)被分解为三个满足第二、三范式的关系模式:
(Sno, Sname, Ssex, Sdept)
(**Sdept**, Sloc)
(**Sno,Cno**, Grade)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值