MySQL三大范式

MySQL三大范式

   数据库设计的三范式(Normal Form)是一组关于关系型数据库设计的规范,目的是为了减少冗余数据、提高数据存储的效率,并确保数据的一致性。

   三范式分为以下三个层次:

   1. 第一范式(1NF): 表中每列的属性不可再分
   数据表中的每一列都是不可再分的基本数据项,而且在每个记录中的每一列都只包含一个值。简而言之,每个字段都是原子性的,不可再分。

  举例:

  在上述例子中,subjects 列包含多个科目,违反了第一范式。为了满足第一范式,我们可以将学科科目拆分成独立的表

  2. 第二范式(2NF): 在第一范式的基础上,表里的非主属性必须完全依赖于主键
 在1NF的基础上,要求非主键列完全依赖于主键,而不是部分依赖。也就是说,表中的非主键列不能依赖于主键的一部分。

  举例:

  分析:在这个例子中,student_name 和 course_name 列依赖于部分候选键 (student_id, course_id),而不是全部候选键。为了符合2NF,我们可以将这些列移出原表,形成两个新表:student和course

  3. 第三范式(3NF): 在第二范式的基础上,表中的非主属性不可以存在依赖关系
在2NF的基础上,要求非主键列之间不存在传递依赖。如果非主键列 A 依赖于主键列 B,而非主键列 C 也依赖于主键列 B,那么非主键列 A 和 C 之间不能有直接的依赖关系。

  举例:

 

    在上述例子中,teacher_age和teacher_sex 列依赖于 teacher_name,而不是直接依赖于主键。为了满足第三范式,我们可以将教师信息单独拆分出来作为一个表

    通过遵循三范式,可以避免数据存储中的冗余和不一致,确保数据库的结构合理、高效,并减少数据更新时的异常情况。然而,在实际设计中,有时会根据具体情况违反三范式的规则,以提高某些查询的性能。这就是在设计数据库时需要权衡的一点。

   

   参考链接:https://juejin.cn/post/6844904184865619982

posted @ 2024-01-20 17:10  欢乐豆123  阅读(66)  评论(0编辑  收藏  举报