数据库原理与应用【2025-2026-2】

赵春、毛红霞、李驰、刘福刚、曾丽

目录

  • 1 两课设计
    • 1.1 教学大纲
    • 1.2 教案
      • 1.2.1 李驰老师-教案
        • 1.2.1.1 24级数媒4班-教案
      • 1.2.2 毛红霞老师-教案
        • 1.2.2.1 24级数字媒体2班教案
        • 1.2.2.2 24级数字媒体3班教案
    • 1.3 课堂反思
      • 1.3.1 李驰老师-课堂反思
        • 1.3.1.1 24数媒4班
          • 1.3.1.1.1 3月9日(第2周第1次课)
          • 1.3.1.1.2 3月16日(第4周第1次课)
      • 1.3.2 毛红霞老师-课堂反思
        • 1.3.2.1 24级数字媒体2班
          • 1.3.2.1.1 3月12号(第2周第2次课——除运算)
          • 1.3.2.1.2 3月18号(第3周第1次课——关系代数习题课)
        • 1.3.2.2 24级数字媒体3班
          • 1.3.2.2.1 3月12日(第2周第2次课——连接、除)
          • 1.3.2.2.2 3月17日(第3周第1次课——关系代数习题课)
    • 1.4 课程反思
      • 1.4.1 李驰老师-课程反思
      • 1.4.2 毛红霞老师-课程反思
    • 1.5 高阶课堂安排
    • 1.6 教材案例配套数据表
    • 1.7 实验数据库Northwind
    • 1.8 数据库软件安装
  • 2 数据库基本概念
    • 2.1 学习内容及要求
    • 2.2 课堂设计(教案)
    • 2.3 内容要点解析
    • 2.4 电子课件
    • 2.5 参考文献
  • 3 关系数据库
    • 3.1 学习内容及要求
    • 3.2 课堂设计(教案)
    • 3.3 内容要点解析
    • 3.4 电子课件
    • 3.5 参考文献
    • 3.6 微课视频
    • 3.7 翻转教学
      • 3.7.1 学习任务单
  • 4 关系代数
    • 4.1 学习内容及要求
    • 4.2 课堂设计(教案)
    • 4.3 内容要点解析
    • 4.4 电子课件
    • 4.5 参考文献
    • 4.6 微课视频
    • 4.7 翻转教学
      • 4.7.1 学习任务单
  • 5 关系代数(习题课)
    • 5.1 学习内容及要求
    • 5.2 课堂设计(教案)
    • 5.3 内容要点解析
    • 5.4 电子课件
    • 5.5 微课视频
  • 6 SQL数据类型与数据定义语句
    • 6.1 学习内容及要求
    • 6.2 课堂设计(教案)
    • 6.3 内容要点解析
    • 6.4 电子课件
    • 6.5 参考文献
    • 6.6 微课视频
    • 6.7 上机实验
    • 6.8 翻转教学1
      • 6.8.1 学习任务单
      • 6.8.2 翻转课件
      • 6.8.3 翻转视频
      • 6.8.4 讨论问题
    • 6.9 翻转教学2
      • 6.9.1 学习任务单
  • 7 SQL单表基本查询
    • 7.1 学习内容及要求
    • 7.2 课堂设计(教案)
    • 7.3 内容要点解析
    • 7.4 电子课件
    • 7.5 参考文献
    • 7.6 微课视频
      • 7.6.1 单表查询与聚合函数
      • 7.6.2 图形化单表查询
    • 7.7 上机实验
    • 7.8 翻转教学
      • 7.8.1 学习任务单
  • 8 SQL统计查询
    • 8.1 学习内容及要求
    • 8.2 课堂设计(教案)
    • 8.3 内容要点解析
    • 8.4 电子课件
    • 8.5 参考文献
    • 8.6 微课视频
    • 8.7 上机实验
    • 8.8 翻转教学
      • 8.8.1 学习任务单
  • 9 SQL多表查询
    • 9.1 学习内容及要求
    • 9.2 课堂设计(教案)
    • 9.3 内容要点解析
    • 9.4 电子课件
    • 9.5 参考文献
    • 9.6 微课视频
    • 9.7 上机实验
    • 9.8 翻转教学
      • 9.8.1 学习任务单
  • 10 SQL嵌套子查询
    • 10.1 学习内容及要求
    • 10.2 课堂设计(教案)
    • 10.3 内容要点解析
    • 10.4 电子课件
    • 10.5 参考文献
    • 10.6 微课视频
    • 10.7 上机实验
    • 10.8 翻转教学
      • 10.8.1 翻转视频
      • 10.8.2 翻转课任务分配
      • 10.8.3 翻转课流程安排
      • 10.8.4 学习任务单
      • 10.8.5 查询语句编写秘籍
  • 11 SQL数据更新
    • 11.1 学习内容及要求
    • 11.2 课堂设计(教案)
    • 11.3 内容要点解析
    • 11.4 电子课件
    • 11.5 参考文献
    • 11.6 微课视频
    • 11.7 上机实验
    • 11.8 SQL编程综合习题课(高阶翻转)
      • 11.8.1 翻转学习任务单
      • 11.8.2 翻转视频
      • 11.8.3 翻转课件
    • 11.9 备份资料
      • 11.9.1 学习任务单
  • 12 索引和视图
    • 12.1 学习内容及要求
    • 12.2 课堂设计(教案)
    • 12.3 内容要点解析
    • 12.4 电子课件
    • 12.5 参考文献
    • 12.6 微课视频
    • 12.7 上机实验
    • 12.8 翻转教学
      • 12.8.1 学习任务单
      • 12.8.2 翻转课件
  • 13 数据库设计
    • 13.1 学习内容及要求
    • 13.2 课堂设计(教案)
    • 13.3 内容要点解析
    • 13.4 电子课件
    • 13.5 参考文献
    • 13.6 微课视频
    • 13.7 上机实验
    • 13.8 数据库设计-翻转方案I(分班级实施)
      • 13.8.1 学习任务单
      • 13.8.2 翻转视频
      • 13.8.3 翻转课件
      • 13.8.4 课前作业及讨论
    • 13.9 数据库设计-翻转方案II(分班级实施)
      • 13.9.1 学习任务单
      • 13.9.2 翻转视频
      • 13.9.3 翻转课件
      • 13.9.4 问答总结
      • 13.9.5 技巧总结
      • 13.9.6 案例练习
  • 14 规范化理论-1
    • 14.1 学习内容及要求
    • 14.2 课堂设计(教案)
    • 14.3 内容要点解析
    • 14.4 电子课件
    • 14.5 参考文献
    • 14.6 翻转教学
      • 14.6.1 学习任务单
  • 15 规范化理论-2
    • 15.1 学习内容及要求
    • 15.2 课堂设计(教案)
    • 15.3 内容要点解析
    • 15.4 电子课件
    • 15.5 参考文献
    • 15.6 翻转视频
    • 15.7 上机实验
    • 15.8 翻转教学
      • 15.8.1 学习任务单
  • 16 事务、存储过程与触发器
    • 16.1 学习内容及要求
    • 16.2 课堂设计(教案)
    • 16.3 内容要点解析
    • 16.4 电子课件
    • 16.5 参考文献
    • 16.6 微课视频
    • 16.7 翻转教学
      • 16.7.1 学习任务单
  • 17 数据库高阶挑战性项目实践Ⅰ
    • 17.1 学习内容及要求
    • 17.2 实践任务
    • 17.3 课堂设计(教案)
    • 17.4 参考文献
    • 17.5 微课视频
  • 18 数据库高阶挑战性项目实践Ⅱ
    • 18.1 学习内容及要求
    • 18.2 实践任务
    • 18.3 课堂设计(教案)
    • 18.4 电子课件
    • 18.5 参考文献
    • 18.6 微课视频
    • 18.7 数据预处理总结
  • 19 课程扩展-数据备份与导入导出
    • 19.1 微课视频
    • 19.2 参考文献
  • 20 课程设计
    • 20.1 课堂设计(教案)
    • 20.2 课程设计及项目报告模板
参考文献
  • 1 参考文献1:数据库...
  • 2 参考文献2:数据库...
  • 3 参考文献3:浅谈关...
  • 4 参考文献4:第六章...
  • 5 参考文献5:数据库...
  • 6 参考文献6:利用范...
  • 7 参考文献7:浅谈规...
  • 8 参考文献8:关系数...

                                                    数据库规范化理论

转载自:https://zhuanlan.zhihu.com/p/344351869

关系模式有好坏之分,一个不好的关系模式存在以下问题:

(1)信息数据冗余太大

(2)插入异常

(3)删除异常

(4)更新异常

对于存在问题的关系模式,可通过模式分解的方法使之规范化。“分解”是解决冗余的主要方法,也是规范化的一条原则:关系模式有冗余问题,就分解它。但是,一个分解方案不是分解程度越大就越优,因为在查询是所付出的连接的代价也会随之增大。所以说,如何改造一个关系模式,就是规范化理论所要讨论的问题。

基本概念

(1)规范化:规范化是指用形式更为简洁、结构更加规范的关系模式取代原有关系模式的过程。

(2)关系模式对数据的要求:

关系模式必须满足一定的完整性约束条件以达到现实世界对数据的要求。完整性约束条件主要包括以下两个方面。
(1)对属性取值范围的限定。
(2)属性值间的相互联系(主要体现在值的相等与否),这种联系称为数据依赖。

(3)属性间的联系

在本专栏的第一篇文章(数据库的系统概述(一))中介绍过属性间的联系,分为两种:实体内部;实体之间的联系。附文章链接:数据库的系统概述(一)

实体之间的联系前面已经介绍过,不在介绍;该部分所用知识为第二种联系,即实体内部各属性的联系,本部分进行阐述:

(1)一对一联系,1:1
例:在学生关系中,若不存在重名现象,那么一个学号决定一个姓名,一个姓名也决定一个学号
(2)一对多联系,1:n
例:一个班级号对应很多学号,但是一个学号只能在一个班级中
(3)多对多联系,n:n
例:一个课程对应多个成绩,一个成绩也可以出现在多个课程中

(4)数据依赖

数据依赖是指通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现 实世界属性间相互联系的抽象,是数据内在的性质。数据依赖有三种:函数依赖多值依赖和连接依赖

重点是函数依赖和多值依赖,本处只讲解这两种依赖。

a.函数依赖:假设给定一个属性的值,就可以唯一确定(查找到)另一个属性的值。比如在设计学生表时,一个学生的学号能决定学生的姓名,也可称姓名属性依赖于学号,对于现实来说,就是如果知道一个学生的学号,就一定能知道学生的姓名,这种情况就是姓名依赖于学号,这就是函数依赖。函数依赖又分为非平凡依赖,平凡依赖;从性质上还可以分为完全函数依赖、部分函数依赖和传递函数依赖。
1.平凡函数依赖:当关系中属性集合Y是属性集合X的子集时(Y⊆X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
2.非平凡函数依赖:当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
3.完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
4.部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
5.传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

(5)码:

定义:设 K 是关系模式 R (U,F)中的属性或属性集合,K'是 K 的任一真子集。若 K→U,而不存在 K'→U(即 K'→U),则 K 为 R 的候选码(Candidate Key),简称码。

补充:
1.若候选码多余一个,则选取其中的一个为主码。
2.包含在任一候选码中的属性,称为主属性或码属性。
3.不包含在任何候选码中的属性称为非主属性或非码属性。
4.最简单的情况,只有单个属性,称单码;最极端的情况,所有属性集合都是码,称全码。

例:关系模式student(sno,sname,sex,birth,classno)中,sno(学号)是主码,classno(班级编号)是外码

(6)范式

1.非规范化的关系(有还可以在分的数据项),有两种情况:有组合数据项,有多值数据项

组合数据项

多值数据项

2.范式:利用规范化理论,使关系模式的函数依赖集满足特定的要求,满足特定要求的关系模式叫做范式。

关系按此规范化程度从低到高可分为 5 级范式,分别称为 1NF、2NF、3NF ( BCNF)、 4NF、5NF。

规范化程度较高者必是较低者的子集,即 5NF  4NFBCNF3NF2NF1NF

一个低一级范式的关系模式,通过模式分解可以转换成若干个高一级范式的关系模式的 集合,这个过程称作规范化。

范式(通过例子介绍范式)

第一范式:消除组中的重复,也就是说列中是否存储了其他列中的信息(字段不可再分
第二范式:消除部分依赖列,也就是说是否有依赖于一部分主键的列(
非主键字段完全依赖主键字段
第三范式:消除非依赖列,是否有依赖于非主键的列(
消除传递依赖

例如:学生信息( 学生ID,学生姓名,所在年级,性别,参加课程,课程ID,课程名称,课程描述,教师ID,教师姓名,教授课程)

该关系模式是非规范化的关系,冗余太大,需要转化为第一范式

学生表(学生ID,学生姓名,所在年级,性别)

学生课程表(学生ID,课程ID,课程名称,教师ID,教师姓名,课程描述)

从第一范式到第二范式,我们需要消除表中部分依赖主键的列,使得非主键字段完全依赖于主键字段。 在学生课程表中,许多列仅仅依赖于课程ID,而不依赖于学生ID,这个表的主键是学生ID+课程ID,因此把这个表分成两个表,第二范式如下:

学生表(学生ID,学生姓名,所在年级,性别)

学生课程表(学生ID,课程ID,课程名称)

课程表(课程ID,教师ID,教师名称,课程描述)

在课程表中,教师ID依赖于课程ID,教师名称又依赖于教师ID,有传递依赖,那么分解第三范式

学生表(学生ID,学生姓名,所在年级,性别)

学生课程表(学生ID,课程ID,课程名称)

课程表(课程ID,教师ID,课程描述)

教师表(教师ID,教师名称)