ai-answer

news/2025/11/20 16:12:47/文章来源:https://www.cnblogs.com/chaoshang8/p/19247501

数据库设计的三大范式(Three Normal Forms, 3NF) 是关系型数据库设计中用于规范数据表结构、减少数据冗余、提高数据一致性的重要原则。它们依次为:


一、第一范式(1NF,First Normal Form)

定义:

确保每张表的每个字段都是原子的(不可再分),即表中的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能有重复的字段。

要求:

  1. 每个字段都是单一值(原子性),不能是集合、列表或复合值。

  2. 每条记录(行)是唯一的,通常通过主键来保证。

例子(不符合1NF):

学号 姓名 课程
001 张三 数学, 英语

“课程”字段包含了多个值(数学和英语),不是原子的。

改进后(符合1NF):

学号 姓名 课程
001 张三 数学
001 张三 英语

或者使用关联表处理多值情况(更推荐)。


二、第二范式(2NF,Second Normal Form)

定义:

在满足 1NF 的基础上,消除非主键字段对主键的部分函数依赖。也就是说,所有非主键字段必须完全依赖于整个主键,而不是主键的一部分。

适用于复合主键(多个字段共同作为主键)的情况。

要求:

  1. 必须先满足 1NF;

  2. 非主键字段必须完全依赖于主键(不能只依赖于主键的一部分)。

例子(不符合2NF):

假设一个表记录学生选课信息,主键是(学号, 课程号):

学号 课程号 课程名称 学生姓名
001 C01 数学 张三
001 C02 英语 张三

• 主键:(学号, 课程号)

• “课程名称” 只依赖于 “课程号”,不依赖于完整的 (学号, 课程号);

• “学生姓名” 只依赖于 “学号”,也不依赖于完整的 (学号, 课程号);

这就存在部分依赖,不符合2NF。

改进(拆分成多个表,满足2NF):

• 学生表:学号(PK)、学生姓名

• 课程表:课程号(PK)、课程名称

• 选课表:学号(FK)、课程号(FK)、成绩等


三、第三范式(3NF,Third Normal Form)

定义:

在满足 2NF 的基础上,消除非主键字段之间的传递依赖,即非主键字段必须直接依赖于主键,而不能依赖于其他非主键字段。

简单说:非主键字段之间不能有依赖关系,它们都应该直接依赖于主键。

要求:

  1. 必须先满足 2NF;

  2. 所有非主键字段必须直接依赖于主键,不能存在非主键字段之间的依赖(传递依赖)。

例子(不符合3NF):

学号(PK) 姓名 系别 系主任
001 张三 计算机 李教授
002 李四 计算机 李教授

• 主键:学号

• “系主任” 依赖于 “系别”,而 “系别” 又依赖于 “学号”

• 所以 “系主任” 是传递依赖于主键(学号),而不是直接依赖

改进(拆表,满足3NF):

• 学生表:学号(PK)、姓名、系别(FK)

• 系别表:系别(PK)、系主任

这样,“系主任”只依赖于“系别”,而“系别”再与学生关联,消除了传递依赖。


总结对比表:

范式 名称 核心要求 目的
1NF 第一范式 字段不可再分,每列都是原子值,每条记录唯一 消除重复字段、确保数据基本单元清晰
2NF 第二范式 在1NF基础上,非主键字段必须完全依赖整个主键 消除部分依赖,避免数据冗余
3NF 第三范式 在2NF基础上,非主键字段必须直接依赖主键,不能传递依赖 消除传递依赖,进一步减少冗余


补充说明:

• 范式越高,数据冗余越少,但查询时可能需要更多关联操作,性能可能受影响。

• 实际项目中,并非一定要追求最高范式,有时为了提高查询效率,会适度反范式化(Denormalization),即故意保留一些冗余数据以优化性能。

• 通常建议至少满足 3NF,在复杂场景下结合业务需求灵活调整。


如你希望,我还可以为你举例说明如何将一个实际业务表逐步规范化到 3NF,或者介绍 BCNF(巴斯-科德范式)、4NF 等更高范式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/971133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 11 月纯化水设备厂家推荐排行榜,生物制药纯化水设备,医疗器械纯化水设备,食品纯化水设备,化妆品纯化水设备,制药纯化水设备公司推荐

2025年11月纯化水设备厂家推荐排行榜:专业选购指南与权威品牌解析 在当今严格的产业标准与品质要求下,纯化水设备已成为生物制药、医疗器械、食品加工、化妆品生产等众多行业不可或缺的基础设施。随着技术迭代与市场…

火山引擎多模态数据湖,破解智能驾驶数据处理瓶颈

在近日举办的2025第八届智能辅助驾驶大会上,火山引擎数据产品解决方案专家分享了由多模态数据湖解决方案构成的数据基座,致力于解决智能网联汽车行业面临的海量多模态数据处理难题。该方案通过存储与计算架构的深度优…

The 2025 ICPC Asia Shenyang Regional Contest

Preface 上周的 ICPC 沈阳,只能说每年赛站博弈都大失败,去年的南京和今年的沈阳看来强度是真低啊 VP 的时候因为有场外因素所以没被现场的榜带歪,很早写过了 AG 两个本质铜牌题后发现在现场就稳 Au 了 最后 DF 双开…

2025年交通安全国际学术会议(ICTS 2025)

SAE出版 (ISSN: 0148-7191) | EI稳定检索 2025年交通安全国际学术会议(ICTS 2025) 2025 International Conference on Traffic Safety 【本会作为第五届物流系统与交通运输国际学术会议(LSTT 2025)分会开展】 在这…

2025一对一教育机构口碑排名:高性价比靠谱名单 + 权威测评排行榜

在当今教育生态中,“不能输在起跑线” 的焦虑像滚雪球般越滚越大。家长们为了让孩子在激烈的升学竞争中脱颖而出,不惜花费重金寻找一对一辅导。然而,课外补习市场乱象丛生,各种打着 “名师授课”“个性化定制” 旗…

11.19题解

A. 植树 很明显的二分答案,二分出来,就是一个线段覆盖问题,贪心的想,假如我有一个点没被左边的树覆盖到,那么我期望右边覆盖到他的那棵树尽可能靠后,然后做一下就行了。 B.树树修剪 考虑一个 dp,你一个点的答案…

11.18题解

climb 首先我们有一个状态时 \(O(nV)\) 的 DP,即考虑到第 i 个点,当前高度是 j 的最小代价。 这个状态太大了,我们考虑哪些状态时冗余的。 考虑我一个点经过调整,如果前一个点确定是 t,那么当前这个点可能且只可能…

视频汇聚平台EasyCVR添加设备提示成功,但平台不展示设备的原因排查

EasyCVR视频融合云服务平台支持多协议设备接入、视频汇聚与分发等核心能力,在安防监控、智慧园区等场景中广泛应用。近期我们接到用户反馈,在EasyCVR平台执行设备添加操作后,设备列表始终无新设备显示,这一问题直接…

2025年车载精酿啤酒设备实力厂家权威推荐榜单:二手精酿啤酒设备/小型精酿啤酒设备/德国精酿啤酒设备源头厂家精选

随着精酿啤酒文化的蓬勃发展,车载精酿啤酒设备作为移动酿造的革命性解决方案,正迅速改变传统啤酒生产和销售模式。据行业数据显示,移动酿造设备市场规模在过去三年内保持了年均15%以上的增长速度,成为啤酒设备领域…

小波自适应去噪在脑电信号处理MATLAB仿真实现

1. 脑电信号特点与小波去噪原理 1.1 脑电信号特性频率范围:0.5-100 Hz,主要能量集中在0.5-30 Hz 信号幅度:10-100 μV,非常微弱 噪声来源:工频干扰:50/60 Hz电源干扰 肌电干扰:肌肉活动产生的高频噪声 眼电干扰…

idea下创建多个springboot项目

1.创建空项目 2.创建模块 按照该方法创建hxl02 hxl03模块,最后的效果如下每个模块都有对应如下目录和文件 可以同时启动,nacos里会同时注册三个模块

2025年胶辊硫化罐直销厂家权威推荐榜单:立式硫化罐/硫化罐密封圈/翻新轮胎硫化罐源头厂家精选

在工业制造领域,胶辊硫化罐作为橡胶制品生产过程中的关键设备,其性能和质量直接影响到产品的耐久性和精度。近年来,随着制造业对自动化、智能化设备需求的增长,胶辊硫化罐市场呈现出稳定上升的趋势。数据显示,202…

基于STM32微控制器的直流无刷电机(BLDC)控制程序实现

基于STM32微控制器的直流无刷电机(BLDC)控制程序实现,整合了六步换相、FOC矢量控制及保护机制:一、硬件配置方案 1. 核心电路设计 STM32F407 驱动电路 --------------------- TIM1_CH1 → PWM_A (U相上桥…

【LVGL】文本区域部件

引言 文本区域部件(lv_textarea)文本区域部件相关 api 函数示例程序 static void event_cb(lv_event_t *e) {lv_obj_t *target = lv_event_get_target(e);const char *txt = lv_textarea_get_text(target);printf(&q…

牛客刷题-Day23

模拟、枚举与贪心 https://ac.nowcoder.com/acm/contest/20960?from=acdiscuss牛客刷题-Day23 今日刷题:\(1041-1045\) 1041 习题-回文数解题思路 构成回文数的情况:出现次数为奇数的数最多一个; 在情况一的基础上…

大厂都在用的测试基础设施:深度解析Dify工作流引擎的设计哲学与最佳实践

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集 当今软件开发领域,测试基础设施的效率和可靠性直接关系到产品的交付质量与速度。随着AI技术的普及,如何将智能能力深度融入测试流程成为各…

2025 年 11 月手工冰淇淋厂家推荐排行榜,0添加冰淇淋,低脂冰淇淋,低糖冰淇淋,巧克力冰淇淋,国潮冰淇淋,磨巧冰淇淋厂家推荐

2025年11月手工冰淇淋厂家推荐排行榜:专业采购指南 随着消费者对健康饮食和品质生活需求的不断提升,手工冰淇淋市场呈现出蓬勃发展的态势。0添加冰淇淋、低脂冰淇淋、低糖冰淇淋、巧克力冰淇淋、国潮冰淇淋以及磨巧冰…

当 Git 账号密码输错后,凭证会被缓存下来怎么办?

当 Git 账号密码输错后,凭证会被缓存下来怎么办?清除缓存的凭证 根据上一步的排查结果,选择对应的方法清除缓存。清除内存缓存 (cache) 如果你使用的是 credential.helper=cache,可以通过以下命令清除内存中的临时…

素数与素数筛

素数与素数筛 素数 素数是指大于1的整数,除了1和自身之外没有其他正因数的数。换句话说,素数只有两个正因数:1和自身。注:1不是素数,2是素数 小素数的判定 当需要判定的数n≤​​时,用Miller-Rabin算法. 试除法 …

oop-实验3 - fg

task1 Button.hpp1 #pragma once2 3 #include<iostream>4 #include<string>5 6 class Button{7 public:8 Button(const std::string &label_);9 const std::string& get_label() const; 1…