当前位置: 首页 > news >正文

详解数据库范式

范式

  • 1. 第一范式(1NF)
  • 2. 第二范式(2NF)
  • 3. 第三范式(3NF)
  • 4. BC范式(BCNF,Boyce-Codd Normal Form)
  • 5. 第四范式(4NF)
  • 6. 第五范式(5NF)
  • 总结:

在数据库设计中, 范式(Normal Forms, NFs)是一种用于规范化数据库结构的理论,用以消除数据冗余、提高数据一致性,同时减少异常问题。范式的核心思想是将数据划分成更小、更独立的表,并通过关系(外键)进行连接。

1. 第一范式(1NF)

目标:确保每列的值是原子值。

  • 要求:

    • 数据库表中的每一列只包含单一值(原子性)。
    • 不允许一列存储多个值(如数组、列表等),也不允许嵌套表。
  • 示例:不符合1NF

    学生ID姓名联系方式
    1张三12345, 67890
    2李四98765

    上述表中“联系方式”列包含了多个值,因此不符合1NF。

  • 改进(符合1NF)

    学生ID姓名联系方式
    1张三12345
    1张三67890
    2李四98765

2. 第二范式(2NF)

目标:消除非主属性对主键的部分依赖。

  • 要求:

    • 满足1NF。
    • 表中的每一个非主属性必须完全依赖于主键,而不能只依赖于主键的一部分(解决部分依赖)。
  • 示例:不符合2NF

    学生ID课程ID课程名称成绩
    1C001数学90
    1C002英语85

    假设主键是(学生ID, 课程ID)的组合,“课程名称”只依赖于课程ID,而不是组合主键,因此违反2NF。

  • 改进(分表,符合2NF)

    • 课程表:

      课程ID课程名称
      C001数学
      C002英语
    • 成绩表:

      学生ID课程ID成绩
      1C00190
      1C00285

3. 第三范式(3NF)

目标:消除非主属性之间的传递依赖。

  • 要求:

    • 满足2NF。
    • 非主属性之间不存在传递依赖(即非主属性不能依赖于另一个非主属性)。
  • 示例:不符合3NF

    学生ID系ID系名称
    1CS001计算机系
    2EE002电气工程系

    在此表中,“系名称”依赖于“系ID”,“系ID”又依赖于主键“学生ID”,这是一种传递依赖。

  • 改进(分表,符合3NF)

    • 学生表:

      学生ID系ID
      1CS001
      2EE002
    • 系表:

      系ID系名称
      CS001计算机系
      EE002电气工程系

4. BC范式(BCNF,Boyce-Codd Normal Form)

目标:消除主属性间的依赖关系。

  • 要求:

    • 满足3NF。
    • 对于每一个函数依赖 X → Y X \to Y XY X X X 必须是超键。(超键是一个或多个属性的组合,这些属性的值可以唯一地标识表中的每一行记录。换句话说,一个超键中的值是足够独特的,它能够用来区分表中的任意两条记录。)
  • 示例:不符合BCNF

    教师ID课程名称教室
    T001数学R101
    T002英语R102

    假设(教师ID, 课程名称)为主键,“教室”依赖于“课程名称”,“课程名称”不是超键,因此违反BCNF。

  • 改进(分表)

    • 课程表:

      课程名称教室
      数学R101
      英语R102
    • 教师课程表:

      教师ID课程名称
      T001数学
      T002英语

5. 第四范式(4NF)

目标:消除多值依赖。

  • 要求:

    • 满足BCNF。
    • 表中不能存在非主属性的多值依赖。
  • 示例:不符合4NF

    学生ID语言爱好
    1英语篮球
    1英语足球
    1法语篮球
    1法语足球

    上述表中,“语言”和“爱好”是独立的多值属性,存在多值依赖。

  • 改进(分表)

    • 学生语言表:

      学生ID语言
      1英语
      1法语
    • 学生爱好表:

      学生ID爱好
      1篮球
      1足球

6. 第五范式(5NF)

目标:消除连接依赖。

  • 要求:
    • 满足4NF。
    • 表中每一个关系都应该能够通过其更小的关系表连接复原(避免连接依赖)。

总结:

范式目标主要特点
1NF消除重复组,保证每列值原子性。每列只存储单一值。
2NF消除部分依赖,非主属性完全依赖主键。必须完全依赖主键,不允许部分依赖。
3NF消除传递依赖,非主属性只依赖主键。非主属性之间不能存在依赖关系。
BCNF消除主属性间依赖,所有函数依赖的决定因素为超键。更严格的3NF。
4NF消除多值依赖,每个关系只存储一个独立主题。解决多值属性独立的问题。
5NF消除连接依赖,确保关系可以通过小表复原。对复杂表分解到极致。

相关文章:

  • 【RTSP】客户端(三) 音频相关
  • Markdown Poster – 免费Markdown转图片工具|优雅图文海报制作与社交媒体分享
  • KiB、MiB、KB与MB的区别
  • 各省水资源平台 水资源遥测终端机都用什么协议
  • 海马下载 1.0.2 | 纯净无广告,极简设计,不限速下载工具
  • jmeter分布式原理及实例
  • Mybaties批量操作
  • 【 Manus平替开源项目】
  • pjsip dtmf发送和接收(pjsua)
  • MySQL | MySQL表的增删改查(CRUD)
  • conda、pip、npm、yarn换国内源
  • 我测试了AI搜索:试图替代谷歌搜索
  • Manus “Less structure,More intelligence ”独行云端处理器
  • 中山六院团队发表可解释多模态融合模型Brim,可以在缺少分子数据时借助病理图像模拟生成伪基因组特征|顶刊解读·25-02-14
  • 30天学习Java第六天——Object类
  • LuaJIT 学习(3)—— ffi.* API 函数
  • VIC模型率定验证
  • 【EI检索】第二届计算机、视觉与智能技术国际会议完成EI检索
  • jenkins 配置邮件问题整理
  • 02-Canvas-fabric.BaseBrush绘图工具
  • 贵州茅台:支持工作餐不上酒的规定,请投资者相信茅台创新和自我调节能力
  • 广药集团原董事长李楚源被“双开”:去年8月被查,曾多次发表争议言论
  • 湖南4个县市区被确定为野生蘑菇中毒高风险区:中毒尚无特效解毒药
  • 信俗与共:清代新疆回疆儒释道庙宇的中华政教
  • 博物馆日|为一个展奔赴一座城!上海171家博物馆等你来
  • 昆明公布3起经济犯罪案例:一人持有820余万假美元被判刑十年