数据库范式 今天药忘吃喽~ 2022-06-11 04:57 178阅读 0赞 ## 1.**基本概念** ## **实体:**现实世界中客观存在并可以被区别的事物。 **属性:**实体所具有的某一特性。 **元组:**表中的一行就是一个元组。 ** 码:**表中可以唯一确定一个元组的某个属性(或者属性组)。如果这样的码有不止一个,那么叫候选码。从候选码中挑一个出来作为标识,它就叫主码。 **主码:**标识一个元组的属性,实体表中通常称为主键。 **候选码:** 若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为(超级码)候选码。 **全码:**如果一个码包含了所有的属性,这个码就是全码。 **主属性:**一个属性只要在任何一个候选码中出现过,这个属性就是主属性。 **非主属性:**与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。 **外码:**一个属性或属性组,它不是码,而是别的表的码,这个属性就是外码。 ## 2.**数据库范式** ## ### **第一范式(1NF)** ### 如果一个关系模型R的所有属性都是不可分的基本数据项,则R∈1NF。 第一范式是指数据库表的每一列都是不可分割的基本数据项,即实体中的某个属性不能有多个值或者不能有重复的属性,即列不能够再分成其他几列。 如联系人表\[编号,姓名,电话\] ;一个联系人有手机和座机,那么这种表结构设计就没有达到1NF。要符合1NF需要把列(电话)拆分,即:联系人表\[编号,姓名,手机,座机\]。 ### **第二范式(2NF)** ### 若关系模式R∈1NF,并且每一个非主键属性都完全依赖于R的主码,则R∈2NF。就是在满足1NF的基础上,属性完全依赖于主键,而不能只依赖于主键的一部分。如果一个数据表的主键只有一个字段的话,它就一定符合第二范式。 如订单明细表\[订单号,产品号,产品价格,产品名称,数量\]; 如果在一个订单中可以订购多种产品,那么主键为\[订单号,产品号\]。因此\[数量\]完全依赖于主键\[订单号,产品号\],而产品价格,产品名称只依赖于产品号。所以订单明细表不符合 2NF。不符合 2NF 的设计容易产生冗余数据。 ### **第三范式(3NF)** ### 关系模型R<U,F>中若不存在这样的码X、属性组Y及非主属性Z(Z (强制依赖)Y),使得X→Y,Y→Z,成立,Y→X不成立,则称R<U,F> ∈ 3NF。若R∈3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。就是在满足2NF的基础上,每个非关键字列都独立于其他非关键字列,并依赖于关键字。即不能存在:非主键列 A 依赖于非主键列 B,非主键列B依赖于主键的情况。 如部门信息表\[部门编号,部门名称,部门简介\];那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表则根据第三范式构建它,否则就会有大量的数据冗余。 ### **巴斯\-科德范式(BCNF)** ### 在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合巴斯\-科德范式。简单的说,就是在满足3NF的基础上,主属性不依赖于主属性。一般关系型数据库设计中,达到BCNF就可以了。 如仓库管理表\[仓库编号,物品编号,管理员编号,数量\];一个管理员只在一个仓库工作,一个仓库可以存储多种物品。则存在 \[仓库编号,物品编号\]→\[管理员编号,数量\] \[管理员编号,物品编号\]→\[仓库编号,数量\] 因此,\[仓库编号,物品编号\]和\[管理员编号,物品编号\]都是候选关键字。表中唯一非关键字段为数量,符合第三范式。但是存在 \[仓库编号编号\]→\[管理员编号\] \[管理员编号\]→\[仓库编号\] 所以不符合巴斯\-科德范式。 ### **第四范式(4NF)** ### 设关系R(X,Y,Z),其中X,Y,Z是成对的、不相交属性的集合。若存在非平凡多值依赖,则意味着对R中的每个属性Ai(i=1,2,...,n)存在有函数依赖 X→Ai(X必包含键)。那么R∈4NF。换句话说,当关系R的属性集合X是非平凡多值依赖的域,它就包含关系R的键。这个定义和BCNF定义唯一的不同点是后者研究非平凡多值依赖的域。若关系属于4NF,则它必属于BCNF。 第四范式的意思是,当一个表中的非主属性互相独立时(3NF),这些非主属性不应该有多值。如联系人表\[联系人编号,手机,座机\] ;满足BCNF。但在一些情况下,比如一些联系人有两个手机号两个座机,那么存在 \[id1,139xxxxxxxx,000-0000001\] \[id1,135xxxxxxxx,000-0000002\] 由于手机和座机是相互独立的,而联系方式存在多值,这时就违反第四范式。因此需要设计一个新表:联系方式\[联系人编号,号码类型,电话号码\]。 第四范式的应用比较少,只有在某些特殊情况下要考虑将表规范到第四范式。所以在实际应用中,一般不要求表满足第四范式。 ### **第五范式(5NF)** ### 第五范式是指关系模式R依赖均由R候选码所隐含。所谓“R中的每一个连接依赖均由R的候选码所隐含”是指在连接时,所连接的属性均为候选码。第五范式将表分割成尽可能小的块,为了排除在表中所有的冗余。 如联系人表\[联系人编号,手机,座机\] ;并且联系方式存在多值,因此可以将表分解为 手机号码表\[联系人编号,手机号码\] 座机号码表\[联系人编号,座机号码\] 第五范式的应用非常少,只在某些特殊情况下会有意义。
相关 数据库范式 读书的时候,上数据库课,一开头就讲范式。一直搞不懂这个范式,也不清楚是做什么的。 其实,范式跟我们数据库的表设计息息相关。或者这么说,其实我们许多时候基本都懂得怎么设计表,实 旧城等待,/ 2022年12月31日 06:29/ 0 赞/ 107 阅读
相关 数据库--范式 1.第一范式(1NF):每一个分量必须是不可分的数据项 如果数据库表中的所有字段值都是不可分解的原子值 2.完全依赖:X决定Y,但是X的任何一个真子集都都不能决定Y 本是古典 何须时尚/ 2022年08月21日 14:52/ 0 赞/ 163 阅读
相关 数据库范式 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系数据库有六种范式: 柔情只为你懂/ 2022年07月13日 08:17/ 0 赞/ 156 阅读
相关 数据库范式 范式:Normal Form (NF) 第一范式-1NF:列的原子性,即列不能再拆分,一个列只表示一个意思。 第二范式-2NF:首先满足1NF,然后,所有的非主键必须完 灰太狼/ 2022年07月10日 15:28/ 0 赞/ 164 阅读
相关 数据库范式 1.基本概念 实体:现实世界中客观存在并可以被区别的事物。 属性:实体所具有的某一特性。 元组:表中的一行就是一个元组。 码:表中可以唯一确定一个元组的某个属性( 今天药忘吃喽~/ 2022年06月11日 04:57/ 0 赞/ 179 阅读
相关 数据库-范式 作者:Lyken 链接:https://www.zhihu.com/question/24696366/answer/46864498 来源:知乎 著作权归作者所有 「爱情、让人受尽委屈。」/ 2022年05月26日 23:53/ 0 赞/ 185 阅读
相关 数据库范式 数据库范式 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包 怼烎@/ 2022年05月26日 11:48/ 0 赞/ 163 阅读
相关 数据库范式 数据库范式 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有主键;二是没有包含在 布满荆棘的人生/ 2022年04月08日 15:48/ 0 赞/ 236 阅读
相关 数据库范式 多值依赖的定义: 设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r, 比眉伴天荒/ 2022年02月19日 23:22/ 0 赞/ 331 阅读
相关 数据库范式 > 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系数据库有六种范 淡淡的烟草味﹌/ 2021年09月22日 20:42/ 0 赞/ 406 阅读
还没有评论,来说两句吧...