数据库的三大范式是什么?

数据库的三大范式是关系数据库设计中用于规范化数据结构的三种主要规则,它们分别是:

  1. 第一范式 (1NF)原子性

    • 每个字段中的值必须是原子值(不可再分的基本数据项),即每个字段只能存储单一的、不可分割的值。
    • 例如,不能将多个电话号码存储在一个字段中,而是应该将它们拆分为多个记录或字段。

    举例
    错误的表结构(违反1NF):

    ID Name Phone Numbers
    1 Alice 12345, 67890

    正确的表结构(符合1NF):

    ID Name Phone Number
    1 Alice 12345
    1 Alice 67890
  2. 第二范式 (2NF)消除部分依赖

    • 1NF的基础上,要求每个非主键字段必须完全依赖于主键,而不是只依赖于主键的一部分。
    • 如果一个表的主键是复合键(由多个字段组成),那么表中的每个非主键字段必须依赖于整个主键,而不是依赖于主键的一部分。

    举例
    错误的表结构(违反2NF):

    StudentID CourseID Instructor Grade
    1 CS101 Dr. Smith A
    1 CS102 Dr. Brown B

    在这个表中,Instructor依赖于CourseID,而不是StudentIDCourseID的组合主键,因此违反了2NF。

    正确的表结构(符合2NF):

    • 表1:学生课程成绩

      StudentID CourseID Grade
      1 CS101 A
      1 CS102 B
    • 表2:课程信息

      CourseID Instructor
      CS101 Dr. Smith
      CS102 Dr. Brown
  3. 第三范式 (3NF)消除传递依赖

    • 在2NF的基础上,要求每个非主键字段必须直接依赖于主键,而不能依赖于其他非主键字段。
    • 如果一个非主键字段依赖于另一个非主键字段,那么就存在传递依赖,需要将这些字段分到新的表中。

    举例
    错误的表结构(违反3NF):

    StudentID Name Advisor AdvisorPhone
    1 Alice Dr. Lee 123456789
    2 Bob Dr. Kim 987654321

    在这个表中,AdvisorPhone依赖于Advisor,而Advisor依赖于主键StudentID。因此,AdvisorPhone间接依赖于主键,这种依赖关系是传递依赖,违反了3NF。

    正确的表结构(符合3NF):

    • 表1:学生信息

      StudentID Name AdvisorID
      1 Alice 1
      2 Bob 2
    • 表2:导师信息

      AdvisorID Advisor AdvisorPhone
      1 Dr. Lee 123456789
      2 Dr. Kim 987654321

总结

  • 第一范式 (1NF):确保数据原子化,每个字段只能存储单一值。
  • 第二范式 (2NF):在1NF的基础上,消除部分依赖,确保非主键字段完全依赖于主键。
  • 第三范式 (3NF):在2NF的基础上,消除传递依赖,确保非主键字段直接依赖于主键。
posted @   Eiffelzero  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2022-12-15 1945. 字符串转化后的各位数字之和
点击右上角即可分享
微信分享提示