数据库的三大范式

黎 浩然/ 4 7 月, 2022/ 数据库/DATABASE, 计算机/COMPUTER/ 0 comments

数据库的设计通常遵循一系列的规范化原则,即范式(Normal Forms),以提高数据的一致性、减少数据冗余,并防止数据异常。最基础的三大范式是:

  1. 第一范式(1NF):原子性
    • 定义:第一范式要求表中的每一列都是不可分割的最小数据单位,即每一列的值都是原子的,不能再细分。
    • 目的:确保表中每个字段都是具有单一值的,不包含列表或复合属性,这有助于简化数据操作和查询。
    • 示例
      • 不符合1NF的表:员工表中的一个字段“爱好”包含多个值(如“阅读,游泳”)。
      • 符合1NF的表:将“爱好”拆分为多行或建立单独的爱好表。
  2. 第二范式(2NF):无部分依赖
    • 定义:第二范式在第一范式的基础上进一步要求,表中的所有非主属性完全依赖于主键,而不仅仅是依赖于主键的一部分(如果主键是由多个字段组成的)。
    • 目的:消除记录中的部分依赖,即确保非主属性只依赖整个主键,从而减少数据冗余和更新异常。
    • 示例
      • 不符合2NF的表:一个学生课程表,包含“学生ID, 课程名, 教师名”,其中“教师名”只依赖“课程名”而非完整主键“学生ID, 课程名”。
      • 符合2NF的表:分解成两个表,一个是“学生ID, 课程名”,另一个是“课程名, 教师名”。
  3. 第三范式(3NF):无传递依赖
    • 定义:第三范式要求表必须先满足第二范式,且表中的所有非主属性不仅完全依赖于主键,而且不依赖于其他非主属性(消除传递依赖)。
    • 目的:进一步减少数据冗余和更新异常,确保每列的数据依赖于主键,从而使数据模型更加独立。
    • 示例
      • 不符合3NF的表:一个包含“学生ID, 院系名, 院系电话”字段的表,其中“院系电话”依赖于“院系名”而非“学生ID”。
      • 符合3NF的表:分解成两个表,一个是“学生ID, 院系名”,另一个是“院系名, 院系电话”。
Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*