数据库的三大范式

数据库设计三大范式

1.第一范式:(1NF)无重复的列(确保每列保持原子性)

所有字段值都是不可分解的原子值
如:表中若有“地址"列。则地址还可以拆分为:国家、省份、城市等这些列

2、第二范式:(2NF)属性完全依赖于主键(确保表中的每列都和主键相关)

在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
如:一张表是描述学员的;有学员编号,学校名称;其中学校名称和学员编号没有依赖关系。应把学校名称放在学校表中

3、第三范式:(3NF)属性不依赖于其它非主属性,基于第二范式。即不能存在:非主键列 A 依赖于非主键列 B(确保每列都和主键列直接相关,而不是间接相关)

数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系。

像:a-->b-->c  属性之间含有这样的关系,是不符合第三范式的。

比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)

这样一个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话)

这样的表结构,我们应该拆开来,如下。

(学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)


三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。

 

其他见:数据库的三大范式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值