简单易懂数据库三范式

数据库三范式

范式:建立科学的,规范的的数据库可以有效提升数据的存储性能,这是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。

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

第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。
  若数据库有“地址”这个字段,存储格式为“河南省郑州市高新区人民路2号”。系统中经常性使用“城市”来进行操作,这时地址字段是可拆分存储的,为了符合第一范式,应该拆分成“省份”+“城市”+“具体地址”两个字段来进行存储。
用户信息表:

编号姓名省份城市具体地址
1张大强河南郑州高新区人民路2号
2王六河南开封顺河回族区明伦街85号

2NF:确保数据库表中每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。

第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
  一个订单可能对应多个商品,所以设计订单表可能会将“订单编号”和“商品编号”两个字段作为联合主键。

订单编号商品编号商品名称数量单位价格商品描述
1000189挖掘机1200000用来挖土
1000161电脑59999写代码必备
1000278鞋拔子25.9勾鞋

但商品信息若也存储在订单表中,商品信息字段只依赖于“商品编号”这个主键,属于部分依赖。则应将商品信息拆分成另一张表,即一张表中只存储一种数据。应拆分成:
订单信息表:

订单编号商品编号数量
10001891
10001615
10002782

商品信息表:

商品编号商品名称单位价格商品描述
89挖掘机200000用来挖土
61电脑9999写代码必备
78鞋拔子5.9勾鞋

3NF:每一列数据都和主键直接相关,而不能间接相关。。

第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.
  比如在设计一个审批流程表的时候,可以将提交人编号作为一个外键和审批流程表建立相应的关系,而不可以在审批流程表中添加关于提交人其他信息(比如姓名、电话)的字段,如下面这两个表所示的设计就是一个满足第三范式的数据库表。
审批流程表:

流程编号流程名称当月提交次数提交人编号
001请假31
002拨款采购61

提交人信息表:

提交人编号提交人姓名提交人电话
1郝厉害13838386666
2王麻子15224667878

在查询流程信息的时候,就可以使用提交人编号来引用提交人信息表中的记录,也不必在订单信息表中多次输入提交人信息的内容,减小了数据冗余。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值