F_JustWei's Studio.

数据库系统

字数统计: 2.9k阅读时长: 10 min
2021/05/19 Share

数据库系统

三级模式 - 两级映射

image-20210309135333705

数据库设计过程

image-20210309220913852

E-R模型

image-20210309221210852

  • 椭圆表示属性

  • 矩形表示实体

  • 菱形表示联系

集成的方法:

  • 多个局部 E-R 图一次集成。
  • 逐步集成,用累加的方式一次集成两个局部 E-R 。

集成产生的冲突及解决办法:

  • 属性冲突:包括属性域冲突和属性取值冲突。
  • 命名冲突:包括同名异义和异名同义。
  • 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。

一个实体型转换为一个关系模式

  • 1: 1 联系至少转换为 2 个关系模式(有2个实体型,转换为 2 个关系模式)
  • 1: n 联系至少转换为 2 个关系模式(有2个实体型,转换为 2 个关系模式)
  • m: n 联系至少转换为 3 个关系模式(有2个实体型,转换为 2 个关系模式。有 1 个多对多联系,转换为 1 个关系模式。所以有三个关系模式)

三个以上实体间的一个多元联系

image-20210525222113995

有3个实体型,故转换为3个关系模式。

有1个多对多联系,故转换为1个关系模式。

所以最少转化为4个关系模式。

关系代数

image-20210309223732624

  • 并(合并,重复的值只出现一次)

image-20210525222146198

  • 交(找公共部分)

image-20210309223813959

  • 差(去掉公共部分)

    image-20210309223123000

  • 笛卡尔积

image-20210309223839913

  • 投影(选列)(sno可以用1代替,依次类推)

image-20210309223848999

  • 选择(选行)(sno可以用1代替,依次类推)

image-20210309223858046

  • 联接

image-20210309223637455

规范化理论

函数依赖

设 R(U) 是属性 U 上的一个关系模式,X 和 Y 是 U 的子集,r 为 R 的任一关系,如果对于 r 中的任意两个元组 u,v ,只要有 u[X] = v[X],就有 u[Y] = v[y],则称 X 函数决定 Y ,或称 Y 函数依赖于 X ,记为 X → Y。

image-20210310114711170

  • 部分函数依赖:设 X,Y 是关系 R 的两个属性集合,存在 X → Y,若 X’ 是 X 的真子集,存在 X ’→ Y,则称 Y 部分函数依赖于 X。

    例:学生基本信息表 R 中(学号,身份证号,姓名)当然学号属性取值是唯一的,在 R 关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号)。

  • 完全函数依赖:设 X, Y是关系 R 的两个属性集合,X’ 是 X 的真子集,存在 X → Y,但对每一个 X’都有 X’! → Y,则称 Y 完全函数依赖于 X。

    例:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级)。

  • 传递函数依赖:设 X,Y,Z 是关系 R 中互不相同的属性集合,存在 X→Y (Y !→X), Y→Z,则称 Z 传递函数依赖于 X。

    例子:在关系 R (学号 ,宿舍, 费用)中,(学号)->(宿舍), 宿舍 != 学号,(宿舍) -> (费用),费用 != 宿舍,所以符合传递函数的要求。

价值与用途

非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常、插入异常、删除异常。

image-20210310120107697

超键:唯一标识元组(可能存在多余属性)(一般不考)

候选键:唯一标识元组(已消除多余属性)

主键:任选一个候选键

外键:其他关系的主键

求候选键

  • 将关系模式的函数依赖关系用”有向图”的方式表示。
  • 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
  • 若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一-些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键。

例题1:给定关系R(A1, A2, A3, A4) 上的函数依赖集F={A1→A2,A3→A2, A2→A3, A2→A4}, R的候选关键字为
==A. A1== B. A1A3 C. A1A3A4 D. A1A2A3

image-20210310121247557

例题2:关系模式P(A,B,C,D,E,F,G,H,I,J)满足下列函数依赖: FD={ABD→E, AB→G, B→F, C→J, CJ→I,G→H},求候选码?(ABD→E:ABD的组合键确定E(不等于A→E,B→E,D→E))

==ABCD==

image-20210310121414849

例题3:关系R (A, B, C)满足下列函数依赖:F {B→C,B→A, A→BC},关系R的候选关键字为?
A. AB ==B. A和B== C. A和BC D. AC和AB

image-20210310121528652

范式

image-20210310122321791

主属性:属于候选键的一部分。

非主属性:不属于候选键的一部分。

第一范式(1NF) :在关系模式R中,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称R是第一范式。

例题:下表所示的关系R是否满足1NF,如果不满足,应如何调整?

image-20210310122724500

调整后:

系名称 教授 副教授
计算机系 6 10
电子系 3 5

第二范式(2NF) :当且仅当R是1NF,且每一个非主属性完全依赖主键(不存在部分依赖)时,则称R是第二范式。

思考题:请思考该关系模式会存在哪些问题(从数据冗余、更新异常、插入异常、删除异常这几个方面来考虑),解决方案是什么?

image-20210310123056260

SNO:学号 CNO:课程号 GRADE:成绩 CREDIT:绩点

拆分为两个表(简略):

  • 表1
SNO CNO GRADE
S01 C01 75
S02 C01 92
  • 表2
CNO CREDIT
C01 4
C02 2

第三范式(3NF) :当且仅当R是1NF,且E中没有非主属性传递依赖于主键时,则称R是第三范式。

思考题:请思考该关系模式会存在哪些问题(从数据冗余、更新异常、插入异常、删除异常这几个方面来考虑),解决方案是什么?

image-20210310123901619

拆分为两个表(简略):

  • 表1
SNO SName DNO
S01 张三 D01
S02 李四 D01
  • 表2
CNO DNAME LOCATION
D01 计算机系 1号楼
D02 信息系 2号楼

BC范式(BCNF) :设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。

image-20210310211839598

==C D A==

模式分解

  • 保持函数依赖分解

设数据库模式ρ={R1, R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,ρ 中每个模式Ri上的FD集是Fi。如果{F1, F2,…,Fk} 与F是等价的(即相互逻辑蕴涵),那么称分解ρ保持FD。

  • 无损分解

什么是有损,什么又是无损?
有损:不能还原。

无损:可以还原。

无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式。

思考题:

有关系模式:成绩(学号,姓名,课程号,课程名,分数)
函数依赖:学号→姓名,课程号→课程名,(学号,课程号)→分数
若将其分解为:
成绩(学号,课程号,分数)
学生(学号,姓名)
课程(课程号,课程名)

请思考该分解是否为无损分解?

由于有:学号→姓名,所以:
成绩(学号,课程号,分数,姓名)
由于有:课程号→课程名,所以:
成绩(学号,课程号,分数,姓名,课程名)

image-20210310214301261

image-20210310214532328

image-20210310214612915

并发控制

基本概念

image-20210311092636812

存在的问题

image-20210311092942335

封锁协议

  • 一级封锁协议。事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。==可防止丢失修改==
  • 二级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。==可防止丢失修改,还可防止读“脏”数据==
  • 三级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。==可防止丢失修改、防止读“脏”数据与防止数据重复读==
  • 两段锁协议。可串行化的。可能发生死锁

数据库完整性约束

  • 实体完整性约束
  • 参照完整性约束
  • 用户自定义完整性约束
  • 触发器

数据库安全

image-20210311094008389

数据备份

  • 冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份下来。
  • 热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。

image-20210311094312726

  • 完全备份:备份所有数据
  • 差量备份:备份上一次完全备份之后变化的数据
  • 增量备份:备份上一次备份之后变化的数据
星期一 星期二 星期三 星期四
完全备份 增量备份 增量备份 差量备份
备份星期一备份之后变化的数据 备份星期一备份之后变化的数据
备份星期二备份之后变化的数据
备份星期一备份之后变化的数据
  1. 静态海量转储:在系统中无运行事务时进行,每次转储全部数据库。
  2. 静态增量转储:在系统中无运行事务时进行,每次只转储上一 次转储后更新过的数据。
  3. 动态海量转储:转储期间允许对数据库进行存取或修改,每次转储全部数据库。
  4. 动态增量转储:转储期间允许对数据库进行存取或修改,每次只转储上一次转储后更新过的数据。

日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。

数据库故障与恢复

image-20210311100024791

数据仓库与数据挖掘

  • 面向主题
  • 集成的
  • 相对稳定的(非易失的)
  • 反映历史变化(随着时间变化)

image-20210311144031024

数据挖掘方法:

  • 决策树
  • 神经网络
  • 遗传算法
  • 关联规则挖掘算法

数据挖掘方法分类:

  • 关联分析:挖掘出隐藏在数据间的相互关系。
  • 序列模式分析:侧重点是分析数据间的前后关系(因果关系)。
  • 分类分析:为每一个记录赋予-个标记再按标记分类。
  • 聚类分析:分类分析法的逆过程。

反规范化

由于规范化会使表不断的拆分,从而导致数据表过多。这样虽然减少了数据冗余,提高了增、删、改的速度,但会增加查询的工作量。系统需要进行多次连接,才能进行查询操作,使得系统效率大大下降。

技术手段:

  • 增加派生性冗余列
  • 增加冗余列
  • 重新组表
  • 分割表

大数据

image-20210311145310170

image-20210311145610400

大数据处理系统应该具有的重要特征:

  • 高度可扩展性
  • 高性能
  • 高度容错
  • 支持异构环境
  • 较短的分析延迟
  • 易用且开放的接口
  • 较低成本
  • 向下兼容性
CATALOG
  1. 1. 数据库系统
    1. 1.0.1. 三级模式 - 两级映射
    2. 1.0.2. 数据库设计过程
    3. 1.0.3. E-R模型
    4. 1.0.4. 关系代数
    5. 1.0.5. 规范化理论
      1. 1.0.5.1. 函数依赖
      2. 1.0.5.2. 价值与用途
      3. 1.0.5.3.
      4. 1.0.5.4. 求候选键
      5. 1.0.5.5. 范式
      6. 1.0.5.6. 模式分解
    6. 1.0.6. 并发控制
      1. 1.0.6.1. 基本概念
      2. 1.0.6.2. 存在的问题
      3. 1.0.6.3. 封锁协议
    7. 1.0.7. 数据库完整性约束
    8. 1.0.8. 数据库安全
    9. 1.0.9. 数据备份
    10. 1.0.10. 数据库故障与恢复
    11. 1.0.11. 数据仓库与数据挖掘
    12. 1.0.12. 反规范化
    13. 1.0.13. 大数据