数据结构中的1范式,2范式,3范式,bc范式,4范式,5范式。怎么理解?希望解释的直白些。

数据结构中的1范式,2范式,3范式,bc范式,4范式,5范式。怎么理解?希望解释的直白些。,第1张

这个不是数据结构的内容,属于数据库设计的范畴。规范化设计数据库可以减少数据冗余,减少数据插入、更新异常。

1范式,2范式,3范式,bc范式,4范式,5范式是规范化标准。

比如:目前的所有商用数据库设计出来的表至少必须满足第一范式(1nf:即满足表的所有属性都是不能再分解的原子属性)。

2范式-5范式这些标准多是根据表的属性间的不同程度的函数依赖(从1nf到5nf逐步提高标准)来区分的。由数据库设计者把握设计出来的数据库规范化到什么程度。理论上满足的规范化程度越高,设计出来的数据库越有效、稳定。但有时候考虑到数据查询、表连接的频率问题,不得不反规范化,减低满足的标准才能提高程序执行效率。

简单的讲可以这样理解:

第一范式:指表中的属性都是原子属性,不能再拆分了。

第二范式:在第一范式的基础上,要求非主属性都完全函数依赖于主键。

第三范式:在第二范式的基础上,要求要求没有非主属性传递依赖于主键。

BC范式:在第三范式基础上,要求所有非主键属性都必须依赖于主键。

第四范式:在BC范式基础上,要求表中存在的多值依赖都必须是对主键函数依赖。

第五范式:在第四范式的基础上,继续拆分表格,消除多值依赖。

在一个表中:

主属性:所有包含在候选码里的属性。

非主属性:不包含在候选码里的属性。

候选码:一个或者一组可以唯一标识一条记录且不含多余属性的属性。

函数依赖:表中属性X的值可以唯一确定Y的值,则说:X确定Y,或Y依赖于X(记作X->Y)。

传递依赖:X->Y,Y->Z。则可以说Z传递依赖于X。

多值依赖:一个属性的值可以确定一组属性。(函数依赖是一种特殊的多值依赖,依赖的整组属性只有1个,而不是多个)

(例如假设有一个人事资料的数据表,我们根据表中记录的一个人的姓名,我们可以查到他的年龄即有: 姓名->年龄。在没有同名存在的情况下,姓名就是这个表的候选键(码),因为姓名可以唯一确定一条记录的其他属性,例如:姓名->(性别、年龄、职位),同时我们把姓名选为该表的主键(含主属性)。姓名以外的其他属性即为非主属性。有时候一个表可以有多个候选键,则需要选择其中一组作为主键,所有候选键包括的属性都是主属性。)

以上内容都是根据自己理解信手敲出。并没有严谨的校对教科书的概念。如有疏漏错误实属正常,如有人补漏改错不胜荣幸。

1、 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分 *** 作的时候将非常方便。

2、 第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

3、 第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。


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

原文地址: http://outofmemory.cn/sjk/10866236.html

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

发表评论

登录后才能评论

评论列表(0条)

保存