数据库的三大范式

数据库的三大范式

目录

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而是依赖于系主任姓名,因此要将整个系主任字段拆分到系主任表中

相关推荐
聂 可 以1 小时前
Windows环境安装MongoDB
数据库·mongodb
web前端神器1 小时前
mongodb多表查询,五个表查询
数据库·mongodb
门牙咬脆骨1 小时前
【Redis】redis缓存击穿,缓存雪崩,缓存穿透
数据库·redis·缓存
门牙咬脆骨1 小时前
【Redis】GEO数据结构
数据库·redis·缓存
wusong9992 小时前
mongoDB回顾笔记(一)
数据库·笔记·mongodb
代码小鑫2 小时前
A043-基于Spring Boot的秒杀系统设计与实现
java·开发语言·数据库·spring boot·后端·spring·毕业设计
changuncle2 小时前
MongoDB数据备份与恢复(内含工具下载、数据处理以及常见问题解决方法)
数据库·mongodb
久醉不在酒2 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
WindFutrue2 小时前
使用Mybatis向Mysql中的插入Point类型的数据全方位解析
数据库·mysql·mybatis
我不瘦但很逗2 小时前
Windows下使用DBeaver连接云数据库(MySQL)
数据库·windows