当前位置:网站首页 > 数据科学与大数据 > 正文

数据库新手教程(数据库新手教程pdf)



规范化是组织数据库数据的过程。其目的是通过分解数据库表,消除数据冗余、确保数据一致性和完整性。规范化的过程通常分为多个阶段,称为“范式”(Normal Forms)。

第一范式(1NF)

每一列都是不可分割的基本数据项,不包含重复的列。

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

例如:学生信息表中记录学生的选课信息,一个学生可能选了多门任选课:

这样的数据库是不符合第一范式的,应该将选修课信息单独存放在选课信息表中,使用学生ID将选修课信息和学生信息关联起来

⚠️不满足第一范式会存在数据冗余

第二范式(2NF)

在1NF的基础上,非主键列完全依赖于主键,而不是依赖于主键的一部分。

例如下表:

该表的关键字为(学生ID, 课程号),但是存在以下依赖:

(课程)→ (任课教师)

(学生ID)→(学生姓名. 专业, 学院)

存在非主属性部分依赖关键字的情况

⚠️不满足第二范式会存在如下问题:

  1. 数据冗余
    1. 一个学生需要学习n门课程,学生信息就在表中重复出现n次,一门课程有m个同学需要学习,则课程信息就在表中重复m次
  2. 数据不一致
    1. 更新异常
      1. 如果调整了某学生的专业或某个课程的任课老师发生了变化,需要在表中同时更新n条数据
    2. 插入异常
      1. 假设需要开设新的课程,该课程还没有学生需要学习,那么该课程的信息无法插入数据库
    3. 删除异常
      1. 删除学生信息时,课程信息也会一起被删除

第三范式(3NF)

在2NF的基础上,消除非主键列之间的传递依赖,即任何非主键列都不依赖于其他非主键列

例如:

表中存在如下传递依赖:学生ID → 专业 → 学院,因此不满足第三范式

⚠️不满足第三范式会出现:

  1. 数据冗余
  2. 数据不一致
  3. 缺少数据完整性约束
    1. 修改专业信息时会导致学院信息错误

巴斯-科德范式(BCNF)

在3NF基础上,消除主属性对候选码的部分函数依赖和传递函数依赖

例如:

有如下依赖关系:

(仓库ID, 存储物品ID) →(管理员ID, 数量)

(管理员ID, 存储物品ID) → (仓库ID, 数量)

所以,(仓库ID, 存储物品ID)和(管理员ID, 存储物品ID)都是候选关键字,表中的唯一非关键字段为数量,符合第三范式。但是,由于存在如下决定关系:

(仓库ID) → (管理员ID)

(管理员ID) → (仓库ID)

仓库ID是决定因素,但仓库ID不包含候选键。

同样的,管理员ID也是决定因素,但不包含候选键。

所以该表不满足BCNF。

⚠️不满足BCNF会出现:

  1. 数据冗余
  2. 数据不一致
  3. 缺少数据完整性约束

参考:

数据库规范化说明 - Microsoft 365 Apps | Microsoft Learn

数据库设计之规范化--------几种范式详解_如何对数据库进行规范化设计-CSDN博客

[学习笔记]数据库设计三大范式与BCNF,学习笔记 - ybwang1989 - 博客园

到此这篇数据库新手教程(数据库新手教程pdf)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • JS判断数据是否为File类型2024-12-05 08:54:09
  • VUE去除绑定回显数据中的空格:v-model.trim2024-12-05 08:54:09
  • VUE数据更新滚动条定位在最底部 视图展示最新几条数据2024-12-05 08:54:09
  • Ceisum实时获取后台数据 实时更新实体位置信息2024-12-05 08:54:09
  • 2.typeScript中的数据类型2024-12-05 08:54:09
  • odbc数据库(odbc数据库驱动程序字符值无效)2024-12-05 08:54:09
  • druid数据库连接池不释放(druid数据库连接使用超时)2024-12-05 08:54:09
  • tidb数据库教程(tisidb数据库)2024-12-05 08:54:09
  • 红米手机 数据迁移(红米手机数据迁移到苹果手机怎么操作)2024-12-05 08:54:09
  • 学术数据库官网下载(学术期刊数据库)2024-12-05 08:54:09
  • 全屏图片