02_数据库范式

本文介绍了数据库设计的三大范式——第一范式、第二范式和第三范式,以及它们在实际应用中的意义。通过订单表的例子解释了第二范式和第三范式的重要性,强调了如何避免数据冗余和提高数据一致性。同时,概述了数据库设计的基本步骤和关键原则,包括需求分析、E-R图绘制、数据库实现和性能优化,提醒在设计时要考虑商业化需求和性能平衡。
摘要由CSDN通过智能技术生成

1. 范式

范式概念
第一范式确保每一列都保证原子性
第二范式在第一范式的基础上,确保每一列都跟主键相关
第三范式在前2个范式的基础上,确保每列都跟主键直接相关,而不是间接相关

1.2 第二范式

举例说明:

  • 比如要设计一个订单表,这个订单表将订单号和商品编号作为联合主键。
  • 这样就产生一个问题,该表中的商品详情不该与订单号主键相关联,而仅仅是与商品编号相关联,这样就不满足第二范式。
  • 因此,需要对这个表进行拆分,拆分为订单表(订单号),订单详情(订单号,商品编号,没有商品详情),商品表。

1.3 第三范式

举例说明:

  • 设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。

2. 如何设计数据库

2.1 设计步骤

  • 需求分析,画出E-R图
  • 根据模型设计数据库
  • 写代码测试和部署

2.2 设计原则

  • 关联表不超过3张表
  • 更多考虑商业化需求和目标(成本以及用户体验)性能更加重要
  • 在规范性能满足的情况下适当考虑一下规范性
  • 故意给某些字段增加冗余字段(将多表查询改为单表查询)
  • 故意增加计算列将大数据量降为小数据量查询:索引

参考资料:

数据库设计三大范式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值