您的位置:首页 > 新闻 > 资讯 > 深圳南山做网站的公司_网络推广培训网_电脑课程培训零基础_百度手机app

深圳南山做网站的公司_网络推广培训网_电脑课程培训零基础_百度手机app

2025/5/10 17:16:26 来源:https://blog.csdn.net/2402_88047672/article/details/147166206  浏览:    关键词:深圳南山做网站的公司_网络推广培训网_电脑课程培训零基础_百度手机app
深圳南山做网站的公司_网络推广培训网_电脑课程培训零基础_百度手机app

目录

Normalization(范式化)

为什么需要 Normalization?

🧩 表格分析:

第一范式(1NF) 

 什么是第一范式(First Normal Form)?

 第二范式(2NF)

 什么是第二范式(2NF)?

怎么规范化成 2NF?

 第三范式(3NF)

什么是第三范式(3NF)?

当前表违反 3NF 的原因:

规范化为3NF 

Normalization(范式化)

为什么需要 Normalization?

目的:

  1. 减少数据冗余(重复)

  2. 避免数据不一致

  3. 提高数据完整性

  4. 简化维护(插入、更新、删除)

🧩 表格分析:

原始表(未规范化):

StudentYearClassTeacher
John Smith9GeographyMr. Green
Tom Buchanan9GeographyMr. Green
Sarah Bennet8PhysicsMrs. Einstein
Charlie Brown9GeographyMr. Green
April Barnes10MusicMrs. Sharpe

这个表的问题:

  • “Geography - Mr. Green” 重复了 3 次。

  • 如果某天 Mr. Green 改名了,需要修改所有相关记录 → 数据一致性风险

  • 如果 Geography 班级没有学生,无法记录老师信息 → 数据不完整

第一范式(1NF) 

 什么是第一范式(First Normal Form)?

  • 字段中不能有多个值(必须是原子值)

  • 字段名不应重复(如 Class1, Class2)

  • 每一行记录应代表一个唯一实体的单一信息单位

StudentYearClass
Paul Dawson11Math
Peggy Mitchell10History
Paul Dawson11Math
Brian Cox8English, Chemistry
Linda Marsh7Math, History, Biology

❌ 为什么这个表不满足第一范式(1NF)?

  1. 字段“Class”不是原子值(存在多个值组合成一个字段):

    • Brian Cox 的 Class 是 “English, Chemistry”(包含多个课程)

    • Linda Marsh 的 Class 是 “Math, History, Biology”

    • 这违反了 1NF 的“每个字段必须只包含一个值”的规则。

  2. 存在重复行(Paul Dawson 出现了两次,内容完全一样)。

 规范化后的学生信息表

💡 拆解多值字段 → 变为多行,每行只包含一个原子值

学生姓名(Student)年级(Year)课程(Class)
Paul Dawson11Math
Peggy Mitchell10History
Paul Dawson11Math
Brian Cox8English
Brian Cox8Chemistry
Linda Marsh7Math
Linda Marsh7History
Linda Marsh7Biology

 第二范式(2NF)

 什么是第二范式(2NF)?

2NF 的定义: 一个表满足 2NF,要求它首先是 1NF,且不能有任何“非主属性”对主键的部分依赖。 

通俗讲:

  • 如果主键是复合主键(比如由 Student, Subject 组成),

  • 那么其他字段(如 Age) 必须依赖于整个主键,而不能只依赖主键的一部分。

❌ 看看这个表的问题在哪:

StudentSubjectGradeAge
Natasha WilliamsMathsA15
Natasha WilliamsEnglishB15
Daniel JamesMathsC16
Simon BrownChemistryA14
Emma ThomasGeographyB14
  • Grade 依赖于整个 (Student + Subject),这是 OK 的 

  • Age 只依赖于 Student,不依赖 Subject  → 部分依赖!

怎么规范化成 2NF?

我们要“消除部分依赖” → 拆成两个表让每张表中,非主属性都完全依赖主键。

表一:成绩表(以 Student + Subject 为主键) 

StudentSubjectGrade
Natasha WilliamsMathsA
Natasha WilliamsEnglishB
Daniel JamesMathsC
Simon BrownChemistryA
Emma ThomasGeographyB

表二:学生基本信息表(以 Student 为主键) 

StudentAge
Natasha Williams15
Daniel James16
Simon Brown14
Emma Thomas14
  • 主键:Student

  • 非主属性:Age

  • Age 完全依赖于 Student,符合第二范式 ✅

 第三范式(3NF)

什么是第三范式(3NF)?

一个关系模式满足 3NF,需要:

  1. 满足 2NF;

  2. 所有非主属性 必须直接依赖主键,不能依赖其他非主属性(即消除传递依赖)。

原始表:

SubjectYearStar PupilStar Pupil Date Of Birth
Math2015Matthew Taylor1999-03-21
Physics2015William Edwards1999-09-15
Chemistry2015Georgina Simon1998-11-04
Math2016Benjamin Long2000-05-02
Physics2016William Edwards1999-09-15

当前表违反 3NF 的原因:

  • 主键候选是 (Subject, Year)

  • Star Pupil 是依赖于 (Subject, Year)

  • 但是 Star Pupil Date Of Birth 是依赖于 Star Pupil ❌ → 传递依赖存在

规范化为3NF 

表一:课程之星表 

主键:Subject + Year,非主键:Star Pupil)

SubjectYearStar Pupil
Math2015Matthew Taylor
Physics2015William Edwards
Chemistry2015Georgina Simon
Math2016Benjamin Long
Physics2016William Edwards

表二:学生信息表 

(主键:Star Pupil,非主键:Date of Birth)

Star PupilDate of Birth
Matthew Taylor1999-03-21
William Edwards1999-09-15
Georgina Simon1998-11-04
Benjamin Long2000-05-02

通过拆分:

  • 我们将“课程→之星学生”和“学生→出生日期”的两种关系分离;

  • 保证每个非主属性直接依赖其所属表的主键;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com