数据库的三大范式

数据库的三大范式

目录

1NF

每个字段的数据保持原子性,不可再分割

示例:

不符合第一范式的表结构

学生ID 学生信息
1 张三,男,18岁,计算机科学
2 李四,女,19岁,物理学
3 王五,男,20岁,数学

符合第一范式的表结构

学生ID 姓名 性别 年龄 专业
1 张三 18 计算机科学
2 李四 19 物理学

'学生信息'包含了多种属性,因此不符合第一范式,需要将其拆分为多个独立的列

2NF

在满足第一范式的基础上,要求表中每个非主键字段必须完全依赖于主键,而不是主键的一部分

示例:

不符合第二范式的表结构

学生ID 课程ID 课程名称 成绩 讲师姓名
001 C001 数学 90 张老师

符合第二范式的表结构

学生ID 课程ID 成绩
001 C001 90
课程ID 课程名称 讲师姓名
C001 数学 张老师

课程名称和讲师姓名并没有完全依赖于学生id ,因此在这种情况下我们应该与课程相关的字段拆分到新的课程表中,然后将课程id字段作为外键存储在学生表

3NF

在满足第二范式的基础上,要求非主键字段之间不存在传递依赖,也就是一个非主键列不能依赖于另一个非主键列

示例:

不满足第三范式的表结构

学生ID 学生姓名 系主任姓名 系主任办公室
001 张三 李老师 201室

满足第三范式的表结构

学生ID 学生姓名 系主任ID
001 张三 01
系主任ID 系主任姓名 系主任办公室
01 李老师 201室

与第二范式类似,系主任办公室并不依赖于学生id而是依赖于系主任姓名,因此要将整个系主任字段拆分到系主任表中

相关推荐
JIngJaneIL2 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
微学AI2 小时前
复杂时序场景的突围:金仓数据库是凭借什么超越InfluxDB?
数据库
廋到被风吹走3 小时前
【数据库】【Redis】定位、优势、场景与持久化机制解析
数据库·redis·缓存
有想法的py工程师4 小时前
PostgreSQL + Debezium CDC 踩坑总结
数据库·postgresql
Nandeska4 小时前
2、数据库的索引与底层数据结构
数据结构·数据库
小卒过河01044 小时前
使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址
运维·服务器·数据库
过期动态4 小时前
JDBC高级篇:优化、封装与事务全流程指南
android·java·开发语言·数据库·python·mysql
Mr.朱鹏4 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
一位代码4 小时前
mysql | 常见日期函数使用及格式转换方法
数据库·mysql
SelectDB5 小时前
Apache Doris 4.0.2 版本正式发布
数据库·人工智能