数据库学习笔记之关系数据库理论

1 基本概念

1.1 范式
1 范式分类
  • 第一范式:1NF
  • 第二范式:2NF
  • 第三范式:3NF
  • 巴斯-科德范式:BCNF
  • 第四范式:4NF
  • 第五范式:5NF
1.2 依赖
  • \(X→Y\) ,但 \(Y\subsetneq X\) ,则称 \(X→Y\) 是非平凡的函数依赖
  • \(X→Y\) ,且 \(Y\subseteq X\) ,则称 \(X→Y\) 是平凡的函数依赖
1.3 候选码
  • 概念:可以推导出所有的属性
  • 方法
    • 只出现在左边的,一定是候选码
    • 只出现在右边的,一定不是候选码
    • 左右都出现的,不一定是候选码
    • 左右都不出现的,一定是候选码
    • 再求出已经确定的候选码的闭包,如果可以推导出全部,则当前的及时候选码;否则,就要依次推导每一个可能的值

假设有一个映射 R<U,F>, U(A,B,C,D,E,G), F={AB→C,CD→E,E→A,A→G} ,求其候选码

  • B、D 都只在左边出现,一定是候选码
  • G 只在右边出现,一定不是候选码
  • A、C、E 左右均出现,不一定
  • 用已有的候选码 BD,什么也推不出来,则继续加入可能的属性:
    • \((BDA)^+=ABCDEG\)
    • \((BDC)^+=ABCDEG\)
    • \((BDE)^+=ABCDEG\)

综上,候选码为 {(BDA)、(BDC)、(BDE)}

1.4 其他概念
  • 超码:能表示出所有属性的集合
  • 主码:从候选码中随意取出一个,作为主码
  • 主属性:包含在所有候选码中的属性
  • 非主属性:不包含在左右候选码中的属性
  • 全码:所有的属性都是主码

2 三大范式

2.1 第一范式
  • 定义:所有的字段值均是不可再分割的原子值
编号 姓名 性别 年龄 电话
1 张三 25 123456
2 李四 20 112233
3 王五 18 321654
2.2 第二范式
  • 定义:不包含非主属性对码的部分函数依赖,即一个表中只能保存一种数据,不能将多种数据存放在同一张表中
订单编号 商品编号 商品名称 数量 单位
001 1 台灯 2
002 2 椅子 1
003 3 书包 5

上述表中,包含了订单编号、商品编号,明显属于不同种类的数据

2.3 第三范式
  • 定义:不包含非主属性对码的传递函数依,确保数据表中的每一列数据都和主键直接相关,而不能间接相关

比如设计一个订单数据表的时候,将客户编号作为一个外键与订单表建立关系,而不是在订单表中直接添加客户信息

订单编号 订单项目 数量 客户编号
001 挖掘机 5 1
002 吊车 3 2
003 叉车 2 2
客户编号 客户名称 联系方式
1 张三 123456789
2 李四 321654987
2.4 BC 范式
  • 定义:消除每一属性对候选键的传递依赖,BCNF 是修正的笫三范式

例如存在关系 F={书号→书名, (书名、作者)→书号} ,存在传递依赖,不属于 BC 范式,将其拆分为 F={书号→书名, 作者→书名}, 即可满足 BC 范式

3 公理系统

3.1 三大定律
  • 自反律:若 \(Y\subseteq X\subseteq U\) ,则 \(X→Y\)\(F\) 所蕴含
  • 增广律:若 \(X→Y\)\(F\) 所蕴含,且 \(Z \subseteq U\),则 \(XZ→YZ\)\(F\) 所蕴含
  • 传递律:若 \(X→Y\)\(Y→Z\)\(F\) 所蕴含,则 \(X→Z\)\(F\) 所蕴含
3.2 三大规则
  • 合并规则:由 \(X→Y,X→Z\),有 \(X→YZ\)
  • 伪传递规则:由 \(X→Y,WY→Z\),有 \(XW→Z\)
  • 分解规则:由 \(X→Y\)\(Z \subseteq Y\),有 \(X→Z\)

4 最小依赖集

4.1 求解步骤
  • 拆右边为多个元素的
  • 除去当前的元素,求它的闭包,将集合中所有的元素都算完
  • 左边最小化(遮住一个元素,看能否由其他元素推导出来)
4.2 例题

已知 R<U,F>, U(A,B,C,D,E,F,G), F={BCD→A, BC→E, A→F, F→G, C→D, A→G} ,求 F 的最小依赖集

  • 右边均为一个元素,不可拆分

  • 分别求闭包

    • 对于 BCD→A ,去除 BCD ,无法推出 A ,保留
    • 对于 BC→E,去除 SC,无法推出 E,保留
    • 对于 A→FF→GC→D 去除 A、F、C 后,均无法推出后方,保留
    • 对于 A→G,去除 A ,因为 F→G,因此可以去除
  • 左边最小化

    • 对于 BCD→A

      • 去除 BCD 无法推出 B,保留 B

      • 去除 CBD 无法推出 C,保留 C

      • 去除 DBC 可以推出 D,删除 D

      • BCD→A 最小化后为 AC→A

    • 对于 BC→E

      • 去除 BC 无法推出 B,保留 B
      • 去除 CB 无法推出 C,保留 C
      • BC→E 最小化后仍为 SC→E
    • 其余均为左边均为单属性,无法继续分割,保留

因此,上述题目中,F 的最小依赖集为 {BC→A, BC→E, A→F, F→G, C→D}

5 模式分解

5.1 分解准则
  • 无损连接:分解之后再次连接,和分解完全前一样
  • 保持函数依赖:各属性之间依赖不改变
  • 分解步骤
    • 求出最小的函数依赖集
    • 把不在 F 里面的属性都找出来,单独分一类
    • 把每一个依赖左边相同的分成一类,若没有一样的,则将 A→D 改为 {AD} ;若有 {A→B, A→C} ,则改为 {ABC}
    • 如果候选码没有出现在分离里面,则将任意一个候选码分为一类
5.2 例题

已知 R(ABCDEGH), F={A→D, E→D, D→B, BC→D, DC→A} ,求保持函数依赖的 3NF 分解

  • 最小函数依赖集为:F={A→D, E→D, D→B, BC→D, DC→A}
  • GH 没在 F 里面,单独分为一类,{GH}
  • 候选码为 CE ,未出现在分离里,归为一类,{CE}
  • 则保持函数依赖的 3NF 分解为 {AD}{ED}{DB}{BCD}{DCA}{CE}{GH}
posted @ 2022-02-07 17:43  悟道九霄  阅读(219)  评论(0编辑  收藏  举报