数据库设计之三范式

第一范式(1NF)

列具有原子性,设计列要做到列不再拆分。

id contry
1 中国上海
2 美国纽约

以上的表设计就不满足第一范式,因为contry对应的值可以拆分

so,满足第一范式的设计如下:

id contry city
1 中国 上海
2 美国 纽约

第二范式(2NF)

在满足第一范式的基础上、满足一张表只能描述一件事情下面这张表既包含了学生信息又包含了课程信息所以不满足第二范式,正确的是把学生和课程拆开用分别用学生和课程表存储对应的信息。

id name sex course source
1 tom male Java 100
2 lucy female Python 800

第三范式(3NF)

在满足第二范式的基础上,满足消除传递依赖(表中的数据如果能被推导出来,就不要设计一个字段单独存储)

id name number price totalprice
1 牙膏 20 50 1000
2 袜子 30 60 1800

三范式就是一个空间最省原则。

反三范式

通过增加冗余或者重复数据 来提高数据库的读性能

浪费存储空间,节省查询时间

冗余字段:某一个字段属于一张表,但是它又在另外一张表中

总结

1.尽量根据三范式规则去设计数据库

2.可以合理的加入冗余字段减少join操作让数据库执行的更快。

相关推荐
lypzcgf1 小时前
Coze源码分析-资源库-编辑数据库-后端源码-数据存储层
数据库·coze·coze源码分析·智能体平台·ai应用平台
jackaroo20201 小时前
后端_Redis 分布式锁实现指南
数据库·redis·分布式
liuy96151 小时前
迷你论坛项目
数据库
杨云龙UP1 小时前
小工具大体验:rlwrap加持下的Oracle/MySQL/SQL Server命令行交互
运维·服务器·数据库·sql·mysql·oracle·sqlserver
阿巴~阿巴~1 小时前
使用 C 语言连接 MySQL 客户端(重点)
服务器·数据库·sql·mysql·ubuntu
清水加冰1 小时前
【MySQL】SQL调优-如何分析SQL性能
数据库·sql·mysql
倔强的石头1062 小时前
【金仓数据库】ksql 指南(二) —— 创建与管理本地数据库
数据库·kingbasees·金仓数据库
编程充电站pro2 小时前
SQL 面试题解析:如何用多表查询写用户订单统计?
数据库·sql
小蒜学长3 小时前
jsp基于JavaWeb的原色蛋糕商城的设计与实现(代码+数据库+LW)
java·开发语言·数据库·spring boot·后端
摩羯座-1856903059412 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python