首页 新闻 会员 周边 捐助

数据库设计中的“三范式”(Third Normal Form,简称3NF)是关系数据库规范化的核心理论

0
[已解决问题] 解决于 2025-12-07 15:02
  1. 第一范式(1NF):

    • 确保每列都是原子性的,即每一列都不可再分。

    • 表中的每一列都包含单一的值,而不是集合或数组。

  2. 第二范式(2NF):

    • 必须满足第一范式。

    • 所有非主键列都必须完全依赖于整个主键,而不是依赖于主键的一部分(对于复合主键的情况)。

  3. 第三范式(3NF):

    • 必须满足第二范式。

    • 所有非主键列都必须直接依赖于主键,而不是依赖于其他非主键列(即没有传递依赖)。

 

*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1258
提问于:2025-12-07 15:02
<
分享
最佳答案
0

假设我们有一个学生选课的表,包含以下字段:学号、学生姓名、课程号、课程名称、成绩。

这个表的主键是(学号,课程号),因为一个学生可以选择多门课程,一门课程可以被多个学生选择。

检查范式:

1NF:每个字段都是原子性的,满足。

2NF:非主键字段(学生姓名、课程名称、成绩)必须完全依赖于主键。但是,学生姓名只依赖于学号,而不依赖于课程号;课程名称只依赖于课程号。因此,存在部分依赖,不满足2NF。

为了满足2NF,我们可以将表拆分为:

  • 学生表(学号,学生姓名)

  • 课程表(课程号,课程名称)

  • 选课表(学号,课程号,成绩)

现在,每个表都满足2NF。

3NF:检查每个表是否满足3NF,即不存在传递依赖。

在学生表中,学号是主键,学生姓名直接依赖于学号,没有传递依赖,满足3NF。
在课程表中,课程号是主键,课程名称直接依赖于课程号,满足3NF。
在选课表中,主键是(学号,课程号),成绩依赖于整个主键,满足3NF。

因此,拆分后的表满足3NF。

*Tesla* | 小虾三级 |园豆:1258 | 2025-12-07 15:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册