数据库设计原则之三大范式

首先声明,本文为笔记记录。可能不适合作为博客文章,所以如果看着不舒服,还望“另请高明”,(^__^) 嘻嘻……

数据库设计的时候有三大范式,现简述如下:

第一范式(1NF): 原子性,数据不可再分

原则就是使得表列为原子性,每一个字段内容不能再分解。

第二范式(2NF):唯一性,消除部分依赖

第二范式要求满足如下两个要求,

每一行数据具有唯一性

这一点,只要是有主键就可以实现。因为主键的存在使得每一行数据都具有唯一性。

消除数据之间的部分依赖

依赖的定义:主键确定了其他字段,其他字段依赖于主键而存在。

部分依赖: 某个字段值依赖于部分字段,则发生这种现象的前提是该表主键位置拥有多个字段。

完全依赖: 某个字段完全依赖与主键的所有字段。当一个表的主键仅有一个字段时,必然是完全依赖。

解决办法:

将部分依赖转换成完全依赖,拆表!

将原来存在部分依赖的表拆分,简单来说就是该表主键有几个字段,就拆成(几个+1)的表,前几个字段将分别作为其所在表的唯一主键,即成为完全依赖模式。最后一个表为之前的那几个字段并存的联合主键。用于维护表与表之间的关系。

第三范式(3NF):独立性,消除传递依赖

也就是说,有些字段的值能够使用现有的表列来计算得出,这样的字段就属于冗余字段,会产生传递依赖现象。

解决办法

将传递依赖部分提取出来,拆表!

将原来的表中存在传递依赖的字段提取出来,新建一个表。该新表的主键即为原表中被依赖的那个字段。此字段在原来的表中将作为外键而存在。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值