MySQL 的三范式

数据库范式是数据库设计的基础,包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。1NF要求列不可再分,如地址字段可能需要拆分为国家和省份。2NF要求非主属性完全依赖于主键,避免部分依赖。3NF则确保非主属性不依赖其他非主属性,消除传递依赖,例如订单表中顾客姓名依赖于顾客编号。遵循这些范式能提高数据的一致性和减少数据冗余。
摘要由CSDN通过智能技术生成

三个范式是什么 

第一范式1NF:列不可再分

id

地址

1

中国广东

2

中国云南

上面的表地址字段其实可以继续分:

id

国家

省份

1

中国

广东

2

中国

云南

但是具体地址到底要不要拆分 还要看具体情形,比如看看将来会不会按国家或者省市进行分类汇总或者排序,如果需要,最好就拆,如果不需要而仅仅起字符串的作用,可以不拆,操作起来更方便。


第二范式:非主属性必须依赖于主属性

如果一个关系满足1NF,并且除了主键以外的其它列,都依赖与该主键,则满足二范式(2NF),第二范式要求每个表只描述一件事。

例如:

订单编号产品编号订购日期价格
100a1002017-4-8¥30

 而实际上,产品编号与订单编号并没有明确的关系,订购日期与订单编号有关系,因为一旦订单编号确定下来了,订购日期也确定了,价格与订单编号也没有直接关系,而与产品有关,所以上面的表实际上可以拆分

订单表:

订单编号

001

日期

2017-4-8

产品表:

产品编号

a011

价格

¥30


第三范式:任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

例如:

订单编号订购日期顾客编号顾客姓名
1002017-4-8a01howard

上面的满足第一和第二范式,但是不满足第三范式,原因如下:

通过顾客编号可以确定顾客姓名,即在这个订单表里,这两个字段存在传递依赖,只需要一个就够了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值