数据库的三大范式

在数据库设计的时候,为了使数据库简洁,清晰,而且在使用的时候不会出现一些异常情况,我们需要满足一些范式。

第一范式1NF

第一范式最重要的要求就是:字段不能分割,也就是原子性
怎么理解这句话呢?
举个例子,如果一个字段为电话号码,显然它还可以分为手机号码,固定电话号码,这就不满足字段不可分割原则。
这样就很容易造成异常情况,当需要拨打电话的时候如果这个电话号码是手机号码,可以直接拨打,但如果是固定电话号码,那就要加上区号。

第二范式2NF

第二范式是第一范式的子集
凡是满足第二范式的,一定满足第一范式。
相比第一范式,第二范式多了一个主键,其他字段都依赖于主键。
而不是依赖主键的一部分(主要针对联合主键),如果存在某个属于只依赖于部分主键,此时就不满足第二范式了。
因为依赖于部分主键,说明此关系不够“专一”,仍有冗余,因此需要拆分成多个关系。
此外,主键要具有唯一性,比如说姓名就不能作为主键,因为有很多重名的人,但身份证号码就可以作为主键,因为没有两个人的身份证号码是一样的。

第三范式3NF

第三范式是在第二范式基础上产生的,
满足第三范式的,一定满足第二范式。
第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主键字段,也就是要消除传递依赖,方便理解,可以看做是“消除冗余”。
因此,第三范式往往会将一张表拆成多张表。
举个例子,
|姓名|性别 |学号|学院|学院地址|
|–|–|–|–|–|–|
| | | | | | | |
按照第二范式,我们可以将学号作为主键。
那样,姓名、性别、学院都依赖于主键,但学院地址呢,就依赖学院(非主键),就不满足第三范式。
不妨将它拆成两个表:
|姓名|性别 |学号|学院编号|
|–|–|–|–|–|–|
| | | | | | | |

|学院编号|学院|学院地址|
|–|–|–|–|–|–|
| | | | | | | |
这里就消除了非主键之间的关系了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值