数据库的三大范式

数据库的三大范式

目录

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

相关推荐
Flying pigs~~6 小时前
RAG智慧问答项目
数据库·人工智能·缓存·微调·知识库·rag
misL NITL7 小时前
mysql之如何获知版本
数据库·mysql
许彰午7 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
2401_832365528 小时前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python
2301_779622418 小时前
Go语言怎么用信号量控制并发_Go语言semaphore信号量教程【入门】
jvm·数据库·python
2301_766283448 小时前
c++如何将控制台输出保存到文件_cout重定向到txt【详解】
jvm·数据库·python
北极的冰箱8 小时前
MySQL Ver 8.0.41 for macos14.7密码遗忘
数据库·mysql
XDH_CS9 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql
treacle田9 小时前
达梦数据库-统计信息收集-记录
数据库·达梦数据库统计信息收集
审判长烧鸡10 小时前
PostgreSQL之索引/函数/触发器
数据库·postgresql·触发器·函数·索引