数据库 1NF,2NF,3NF 3范式 介绍

这篇博客介绍了数据库设计中的三个基本范式:1NF,2NF和3NF。1NF强调每个字段值的原子性,不允许组合值。2NF要求非主属性完全依赖于主属性,避免部分依赖。3NF进一步消除传递依赖,确保属性直接依赖于主键。文中通过实例解释了这三个范式的应用及其在数据一致性和冗余方面的重要性,并展示了如何通过拆分表来满足这些范式。
摘要由CSDN通过智能技术生成

数据库 1NF,2NF,3NF 3范式 介绍   

1NF:所有字段值都是不可分解的原子值

比如以下CONTACTINFO字段

  存储 包含手机号码,邮箱地址,保存到一个字段了,就不符合1NF,应该拆分为2个字段  )

 

符合1NF的表设计

2NF:要求非主属性完全依赖于主属性

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。当存在联合主属性的时候,才会发生不符合第二范式的情况。比如一张表有两个主键,不能存在这样的属性,表中存在字段(非主属性)只依赖于其中一个主属性(主键),这就是不符合第二范式。如果存在不符合第二范式的情况,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。

该表虽然只有1个主键,但2NF范式并不是说只有1个主键就不会存在不符合2NF

虽然TID为主键,(PERSONID,ITEMID)为唯一索引,是该表的超键,除了主键外,通过(PERSONID,ITEMID)也能确定每一行记录

2NF 要求该表其他非主字段必须完全依赖于TID 或者完全依赖于(PERSONID,ITEMID)联合超键

该表中存在,ITEMID--》ITEMNAME,UNIT 及通过项目ID就能推导出项目名称和项目单位,

不符合2NF

应该是ITEMID,ITEMNAME,UNIT3个字段组成一个新表,然后上述的表只保存ITEMID字段即可,需要ITEMNAME,UNIT时关联新表即可

上面这个表不满足2NF,会存在新增,修改,删除异常,以及数据冗余

拆分为表1和表2如下所示

表1

 

 表二

3NF:属性不能传递依赖于主属性

第三范式(3NF)是在第二范式(2NF)的基础上建立起来的,即满足第三范式(3NF)必须先满足第二范式(2NF)。如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。

2NF是需要有联合超键才可能发生不符合2NF的情况,而3NF在只有一个主键的情况下也可能发生不符合3NF

如下表PERSONID为主键,存在证件名称-->(依赖)证件类型,证件类型-->(依赖)人员ID

满足某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,不符合3NF

 拆分为以下2张表,才能满足3NF范式

表1

表2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值