- 1
- 0
- 约8.66千字
- 约 69页
- 2023-04-26 发布于重庆
- 举报
S-L-C不是一个好的关系模式 S-L-C(Sno, Sdept, Sloc, Cno, Grade) 码:Sno+Cno (1) 数据冗余度大 (2) 删除异常 (3) 插入异常 (4) 更新复杂 * Theory of Database 29- 第二十九页,共六十九页。 S-L-C不是一个好的关系模式(Cont.) 原因 Sdept、 Sloc部分函数依赖于码。 解决方法 S-L-C分解为两个关系模式,以消除这些部分函数依赖 SC(Sno, Cno, Grade) S-L(Sno, Sdept, Sloc) * Theory of Database 30- 第三十页,共六十九页。 第二范式:2NF 2NF的定义 定义:若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。 S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈1NF S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈2NF ? 答案:S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈2NF ! 原因:存在部分依赖 (Sno, Cno) P Sdept, (Sno, Cno) P Sloc。 1NF且没有部分依赖 * Theory of Database 31- 第三十一页,共六十九页。 第二范式:2NF (Cont.) 解决办法:采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。 S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈2NF SC(Sno, Cno, Grade)∈ 2NF S-L(Sno, Sdept, Sloc)∈ 2NF * Theory of Database 32- 第三十二页,共六十九页。 分解办法 首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。 然后,将依赖于这些主码的属性放置到相应的表中。 最后,去掉只由主码的子集构成的表。 * Theory of Database 33- 第三十三页,共六十九页。 分解: S-L-C(Sno, Sdept, Sloc, Cno, Grade) 对于S-L-C表,首先分解为如下形式的三张表: S-L(Sno,…) C(Cno,…) S-C(Sno, Cno,…) 然后,将依赖于这些主码的属性放置到相应的表中 S-L(Sno,Sdept, Sloc) C(Cno) S-C(Sno, Cno, Grade) 最后,去掉只由主码的子集构成的表,最终分解为: S-L(Sno,Sdept, Sloc) S-C(Sno, Cno, Grade) * Theory of Database 34- 第三十四页,共六十九页。 第二范式:2NF (Cont.) 但是,将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。 S-L(Sno, Sdept, Sloc)∈ 2NF (1) 数据冗余 (2) 删除异常 (3) 插入异常 (4) 更新复杂 * Theory of Database 35- 第三十五页,共六十九页。 第三范式 :3NF 3NF的定义 定义:关系模式RU,F 中每一个非主属性既不部分依赖于码也不传递依赖于码,则称RU,F ∈ 3NF。 或:R ∈ 2NF且非主属性不传递函数依赖于码。 1NF且没有部分依赖 没有传递依赖 2NF且没有传递依赖 * Theory of Database 36- 第三十六页,共六十九页。 第三范式 : 3NF (Cont.) 例:2NF关系模式S-L(Sno, Sdept, Sloc) 函数依赖: Sno→Sdept Sdept → Sno Sdept→Sloc 因此: Sno→Sloc S-L中存在非主属性对码的传递函数依赖,S-L ∈ 3NF t * Theory of Database 37- 第三十七页,共六十九页。 第三范式 : 3NF (Cont.) 解决方法:采用投影分解法,把S-L分解为两个关系模式,以消除传递依赖。 分解过程 (1)对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性; (2)新建一个表,新表中包含在原表中所有依赖于该决定因子的属性; (3)将决定因子作为新表的主码。 * Theory of Database 38- 第三十八页,共六十九页。 第三范式 : 3NF (Cont.) 2NF关系模式S-L(Sno, Sdept, S
原创力文档

文档评论(0)