数据库模式分解的原则是什么

数据库模式分解的原则是什么,第1张

关系模式分解准则

关系模式的规范化过程是通过对关系模式的分解来实现的。把低一级的关系模式分解为若干个高一级的关系模式。这种分解不是唯一的。

规范化的方式是进行模式分解,模式分解的原则是与原模式等价,模式分解的标准是:

模式分解具有无损连接性

模式分解能够保持函数依赖

举例:关系规范化过程

第一范式(1NF):如果一关系模式,它的每一个分量是不可分的数据项,即其域为简单域,则此关系模式为第一范式。

例:将学生简历及选课等数据设计成一个关系模式STUDENT, 其表示为:

  STUDENT(SNO,SNAME,AGE,SEX,CLASS,DEPTNO,DEPTNAME,CNO,

CNAME,SCORE,CREDIT)

设该关系模式满足下列函数依赖:

F={SNO-->SNAME, SNO-->AGE, SNO-->SEX, SNO-->CLASS,CLASS-->DEPTNO,          DEPTNO-->DEPTNAME, CNO-->CNAME,SNO.CNO-->SCORE, CNO-->CREDIT}

由于该关系模式的每一属性对应的域为简单域,即其域值不可再分,符合第一范式定义,所以STUDENT关系模式为第一范式。

第二范式(2NF):若关系模式R?1NF,且每个非主属性完全函数依赖于码,则称R?2NF。

分析一下关系模式STUDENT, 它是不是2NF ?

属性组(SNO,CNO)为关系STUDENT的码。

例如:SNAME非主属性,根据码的特性具有:SNO.CNO??SNAME

根据STUDENT关系模式已知函数依赖集,下列函数依赖成立:SNO??SNAME

所以SNO.CNO??SNAME, SNAME对码是部分函数依赖。同样方法可得到除SCORE属性外,其它非主属性对码也都是部分函数依赖。所以STUDENT关系模式不是2NF。

当关系模式R是1NF而不是2NF的模式时,对应的关系有何问题呢?我们分析STUDENT关系模式,会有下列问题:

存在大量的冗余数据:当一个学生在学习多门课程后,他的人事信息重复出现多次。

根据关系模型完整性规则,主码属性值不能取空值。那么新生刚入学,还未选修课程时,该元组就不能插入该关系中。这种情况称为插入异常。

同样还有删除异常,则会丢失信息

解决上述问题方法是将大的模式分解成多个小的模式,分解后的模式可满足更高级的范式的要求。

这个问题很难一言以蔽之,我给你举一个我常用的例子,希望对你有帮助:

设关系模式R(U,F)中,U={A,B,C,D,E},F={AB→C,C→D,D→E},R的一个分解ρ={ R1(A,B,C),R2(C,D),R3(D,E)}。试判断ρ具有无损连接性。

解:① 首先构造初始表,如图(a)所示。

A B C D E

R1(A,B,C) a1 a2 a3 b14 b15

R2(C,D) b21 b22 a3 a4 b25

R3(D,E) b31 b32 b33 a4 a5

(a)

A B C D E

R1(A,B,C) a1 a2 a3 a4 a5

R2(C,D) b21 b22 a3 a4 b25

R3(D,E) b31 b32 b33 a4 a5

(b)

图:分解的无损连接判断表

② 按下列次序反复检查函数依赖和修改M:

AB→C,属性A、B(第1、2列)中都没有相同的分量值,故M值不变;

C→D,属性C中有相同值,故应改变D属性中的M值,b14改为a4;

D→E,属性D中有相同值,b15、b25均改为a5。

结果如图(b)所示。

③ 此时第一行已为a1,a2,a3,a4,a5,所以ρ具有无损连接性。

说明:在上例步骤后,如果没有出现a1,a2,a3,a4,a5,并不能马上判断ρ不具有无损连接性。而应该进行第二次的函数依赖检查和修改M。直至M值不能改变,才能判断ρ是否具有无损连接性。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9916893.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存