【面试】介绍一下1NF、2NF、3NF、4NF范式

面试模拟场景

面试官: 你能介绍一下1NF、2NF、3NF、4NF范式吗?

参考回答示例

1. 第一范式(1NF - First Normal Form)

定义:

  • 第一范式要求每个表中的字段都是原子性的,即每个字段只包含一个不可分割的值。换句话说,1NF消除了表中重复的列,并确保列中的每个数据项都是单一值。

特点:

  • 单一值: 每个列中的值都是不可再分的基本数据项。
  • 消除重复: 在1NF中,不允许表中的列包含重复的组,也不允许列中包含多值属性。

示例:

假设我们有一个包含学生信息的表:

StudentIDNamePhoneNumbers
1John Doe1234567890, 0987654321
2Jane Smith2345678901

这张表不符合1NF,因为PhoneNumbers列包含了多个值。为了符合1NF,我们需要将多值属性拆分成多个行或列:

StudentIDNamePhoneNumber
1John Doe1234567890
1John Doe0987654321
2Jane Smith2345678901

2. 第二范式(2NF - Second Normal Form)

定义:

  • 第二范式是在满足第一范式的基础上消除部分依赖,即表中的非主属性必须完全依赖于主键,而不能依赖于主键的一部分。2NF主要解决的是部分依赖问题。

特点:

  • 完全依赖: 每个非主属性都必须完全依赖于主键,而不是依赖于主键的一部分。
  • 消除部分依赖: 如果一个非主属性只依赖于主键的一部分,就违反了2NF。

示例:

假设我们有一个订单表:

OrderIDProductIDProductNameQuantity
101P01Widget10
102P02Gadget5

在这个表中,ProductName 依赖于 ProductID,而不是 OrderID,因此这张表违反了2NF。

要符合2NF,可以将表分解成两个表:

  1. 订单表:
OrderIDProductIDQuantity
101P0110
102P025
  1. 产品表:
ProductIDProductName
P01Widget
P02Gadget

3. 第三范式(3NF - Third Normal Form)

定义:

  • 第三范式是在满足第二范式的基础上消除传递依赖,即表中的非主属性不能依赖于其他非主属性。3NF的目标是消除数据冗余,确保数据依赖于主键,而不是其他非主属性。

特点:

  • 消除传递依赖: 非主属性之间不应该存在传递依赖。也就是说,如果A依赖于B,B依赖于C,那么A不应该直接依赖于C。

示例:

假设我们有一个员工表:

EmployeeIDDepartmentIDDepartmentNameManager
1D01SalesAlice
2D02EngineeringBob

在这个表中,DepartmentNameManager 依赖于 DepartmentID,而 DepartmentID 又依赖于 EmployeeID,因此这张表违反了3NF。

要符合3NF,可以将表分解成两个表:

  1. 员工表:
EmployeeIDDepartmentID
1D01
2D02
  1. 部门表:
DepartmentIDDepartmentNameManager
D01SalesAlice
D02EngineeringBob

4. 第四范式(4NF - Fourth Normal Form)

定义:

  • 第四范式是在满足第三范式的基础上消除多值依赖。4NF的目标是确保每个非主属性在主键的基础上都是唯一的,即没有多个独立的多值属性。

特点:

  • 消除多值依赖: 表中的任何非主属性都不应该有多值依赖,即一个主键不应该对应多个独立的多值属性。

示例:

假设我们有一个课程表,其中一个学生可以选修多门课程,并且每门课程可以有多个教师:

StudentIDCourseTeacher
1MathMr. Smith
1MathMrs. Doe
1ScienceDr. Brown

在这个表中,CourseTeacher 是两个独立的多值属性,它们之间存在多值依赖,因此违反了4NF。

要符合4NF,可以将表分解成两个表:

  1. 学生课程表:
StudentIDCourse
1Math
1Science
  1. 课程教师表:
CourseTeacher
MathMr. Smith
MathMrs. Doe
ScienceDr. Brown

5. 总结

  • 1NF(第一范式): 要求每个字段都是原子性的,不允许多值属性和重复列。
  • 2NF(第二范式): 在满足1NF的基础上,消除部分依赖,所有非主属性必须完全依赖于主键。
  • 3NF(第三范式): 在满足2NF的基础上,消除传递依赖,非主属性之间不应该存在依赖关系。
  • 4NF(第四范式): 在满足3NF的基础上,消除多值依赖,确保每个非主属性在主键的基础上都是唯一的。
  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值