首页 > 编程知识 正文

怎么把函数依赖分解范式,分解范式例题

时间:2023-05-06 17:41:50 阅读:15531 作者:4178

//数据库老师老不在,看书很辛苦。 遇到范例更加费解,真的是自己读自学。 好诗好诗

范式转换数据库范式是规范的。 像同心圆一样,最外层的要求最低,最内层的要求最高。

规范要求由低到高,分别为1NF 2NF 3NF BCNF 4NF 5NF

数据库在日常使用中达到3NF的要求已经很苛刻,即使根据BCNF分割新表也不会超过1次。 但是,谁叫我们制造问题呢~

范式对应要求水平高的范式包括比其低的范式的要求

1NF 1NF :关系中的所有属性都是不可分离的

这是表结构的基本要求,所有可以写在数据库中的表都满足2NF 2NF。 消除非主属性对关键候选项的部分函数依赖。 (代码-P非主) ) )。

p应当说明箭头上的y函数依赖于x,但同时y并不完全依赖于x,y部分函数依赖于x。 例:(学号、课程名称)-P姓名代码也称为候补键。 候选键是指,将能够唯一识别元组的一个或多个属性的集合的所有候选键的并集、从主属性r中除去主属性而得到的属性称为非主属性3NF 3NF :消除非主属性对候选键的传递函数依赖(代码-T非主) ) )。

据说z函数依赖于y,y函数依赖于x,z传递函数依赖于x。 例(A-D D-C BCNF BCNF )消除对候补密钥的主属性的部分、传递函数依存(代码-PT主)

BCNF解题思路BCNF解题步骤1,求r中所有FD左侧的闭包,取一个闭包{X},如果可以包含r中所有元素,则该FD满足BCNF2,如果不能包含r中所有元素,则r为两个关系RRR

{X}定义是指从x直接或间接导出的所有要素的集合。 这正好是一些函数依赖和传递依赖的性质。 所以闭包是他们俩的具体应用!

在BCNF例题中,已知r(a、b、c、d、e )包括FD:AB-C C-D D-B D-E,求BCNF分解的新集合。

首先,写出与r中所有FD的左侧对应的闭包

{A,B}={A,b,c,d,E}

{C}={B、c、d、E}

.

实际上即使不列举,如果发现不满足第2个,就根据第2个进行分解,根据{C}分解r

R1={B,c,d,E} R2={A,C}

R2已经只有两种元素,一定满足BCNF规范,不需要考虑,接下来继续考虑R1是否满足BCNF,表示R1中所有FD左侧的闭包

{D}={B,d,E}

.

出现不满意的闭包时,继续分解R1,按照{D}分解R1

R3={B,d,E} R4={C,D}

R4不需要再划分,然后考虑R3是否满足BCNF,写出与R3中所有FD左侧相对应的闭包

{D}={B,d,E}

在R3中,所有闭包都满足条件,递归分解结束后,我完成了BCNF的主题,所以这里暂时就只有这些了。 接下来会陆续更新。

这次的博客参考了很多资料,最后感觉很简单。

喜欢的话请关注。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。