数据库的三大范式

数据库的三大范式

目录

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

相关推荐
Databend12 分钟前
从全表排序到概率统计:Databend 如何用 KLL、Top-N 与 CMS 改进基数估计
大数据·数据库·算法
bonechips15 分钟前
RAG实战(一):EPUB 加载、文本切割与向量入库
前端·数据库
何时梦醒1 小时前
🏯 从零搭建《天龙八部》RAG 智能问答系统 — 完整实战学习日志
数据库·人工智能
无忧.芙桃1 小时前
MySQL数据库原理与实践(四):基本查询
大数据·数据库·mysql
秋田君1 小时前
Qt_常用控件使用学习
数据库·qt·学习
爱喝水的鱼丶1 小时前
SAP-ABAP:SELECT大数据量查询性能调优——避免嵌套循环、减少数据库交互的核心方案
开发语言·数据库·sql·性能优化·sap·abap·erp
三8442 小时前
get方法/post方法/SQL注入文字型/数字型
数据库·sql·mysql
TDengine (老段)3 小时前
已有TSDB?一条配置,免费解锁AI数据管理平台
大数据·数据库·物联网·ai·时序数据库·tdengine·涛思数据
海兰11 小时前
【数据库】tdsql(mysql8.0)优化思考三
数据库·redis
煎饼学大模型12 小时前
Agent 的“大脑-手“解耦架构:当推理层和工具执行层各自独立演进
数据库·人工智能·oracle·架构·agent