画布 1
数据库复习
  第二章 数据模型
    关系的5种基本操作
      选择、投影、并、差、笛卡尔积
    关系完备操作集
      {σ，∏，×，∪，—}
  第三章 关系数据库语言
    SQL查询语言
    SQL DML数据操纵语言
      INSERT
      DELETE
      UPDATE
    SQL DDL中的视图
  第四章 数据库管理系统引论
    知识要点
      数据库管理系统DBMS
        DBMS是数据库系统的核心，对数据库系统的功能和性能有决定性影响
      数据库系统的系统结构
      事务 Transaction
        事务是DBMS的（最小、完整的）执行单位，它由某个用户所执行的一个不能被打断的对数据库的操作序列（SQL语句）组成，且必须满足ACID性质
          原子性(Atomicity)
            为满足A性质，事务要么以提交而结束，要么以撤销而结束
          一致性(Consistency)
            为了满足C性质，事务要遵守完整性约束，使数据库始终处于一致性状态
          隔离性(Isolation)
            为满足I性质，事务在并发执行时必须进行并发控制
          持久性(Durability)
            为了满足D性质，即使数据库因故障而受到破坏，DBMS也应对数据库进行恢复
        事务是恢复和并发控制的基本单位
        更新事务执行时要遵守提交规则和先记后写规则
      DBMS 的进程结构
      数据字典
        是一组关于数据的数据（即元数据metadata），其中包含了数据库的各种定义信息、描述信息和统计信息
    看作业题即可，覆盖了本章重点难点
  第五章 数据库存储模式
    知识要点
      数据库存储结构的特点
      关系表的典型存储机制
        基表的典型存储结构
          表
            DBMS提供物理-逻辑映像，使用户直接面对数据库逻辑结构而非物理结构。一个表空间可跨多个磁盘进行分配
          索引表
            索引是与表或簇集相关的一种可选存储机制，它通过一棵有序树（如B树）将索引键（Index Key, IK）的值与该值所对应的数据记录的物理地址（简称：记录地址）或地址集建立联系，以提高数据检索性能
          索引簇表
            对簇表在簇集键上再建索引，每个簇集键值有一个索引项
          散列簇表
            对簇表的行在簇集键列上运用hash函数进行散列，以决定相应物理块的地址。具有同一散列值的行将存储在一起
    重点难点
      物理存储结构与逻辑存储结构
      索引与B树索引
      散列
      簇集
  第六章 查询处理和优化
    知识要点
      查询处理和查询优化
        查询处理
          从DBMS接受一个查询请求到返回查询结果的处理过程。
        查询优化
          为一个查询确定一个效率（较）高的执行计划（即：操作的先后顺序，表数据的I/O方法，等）
      查询优化的层次与策略
        两个层次
          代数层
            将查询所对应的关系代数表达式以抽象的语法树来表示，然后等价变换之，以期减小查询过程中的中间结果大小
          物理层
            选择高效的存取路径存取表数据，以期提高磁盘I/O的效率
        两种策略
          基于规则
            运用启发式规则为查询确定一个理论上认为“最优的”执行计划
          基于代价估算
            为查询确定几个理论上认为“较优的”执行计划，然后根据数据字典中的参数分别估算它们的执行代价(时间开销)，选择代价最小者作为“最优的”执行计划
      代数优化
      依赖于存取路径的规则优化
      物理层优化
      代价估算
    重点难点
      关系代数的等价变换规则
      代数优化的策略与步骤
      代数优化过程的语法树表示
  第七章 事务管理
    知识要点
      数据库恢复
        故障分类
          事务故障
            指事务因不可预知的原因而夭折
            特征：发生在事务提交完成前。
              没有保存而突然崩溃的PR
          系统故障/崩溃
            指掉电或系统(OS或DBMS)发生故障而导致数据库系统无法继续正常运行下去，此时必须重新启动(Restart)，从而导致一切事务无条件中止运行。
            特征：内存数据全部丢失，但外存上的数据库未遭破坏。
              突然停电
          磁盘/介质故障
            指数据库存储介质(通常是磁盘)发生故障而导致不可读/写盘或盘中数据丢失。
            特征：外存上的数据库已遭破坏，一切已提交的事务对数据库的影响全部丢失。
              硬盘坏了
        各类故障的恢复策略
          事务失效的恢复
            如果需要，则进行undo操作（因为BI已写入Log）；
            从ATL中删除该事务的TID，释放其所占的资源。
            UNDO
          系统失效的恢复
            重新启动OS和DBMS；（由DBA进行）
            利用日志中的前像（BI）对未提交事务进行undo操作（向后恢复），利用日志中的后像（AI）对已提交事务进行Redo操作（向前恢复）。(由系统自动进行)
            UNDO+REDO
          介质失效的恢复
            i) 修复系统，必要时更换磁盘；（由系统管理员或DBA进行）
            ii) 重启系统OS和DBMS；（由系统管理员或DBA进行）
            iii) 加载最近后备（Backup）；（由DBA进行）
            iv) 利用日志中的后像（AI），重做（Redo）自Backup后的所有已提交事务的更新操作。（由系统自动进行）
            重装备份并恢复到一致性状态 + REDO
        更新事务应遵守的规则
          提交规则
          先记后写规则
        日志
          前像
            撤销Undo与向后恢复
          后像
            重做Redo与向前恢复
        恢复中最经常使用的技术
          数据后备复本和日志
        恢复的基本原理
          利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库
      并发控制
        并发
          什么叫并发
            并发操作是指在多用户共享系统中，许多事务可能同时对同一数据进行操作
          为什么要并发运行
            改善系统的资源利用率和吞吐率
            改善短事务的响应时间
          并发会引起什么问题（数据不一致性）
            丢失更新
              对多个事务并发更新同一个数据对象的情况未加控制
              写——写冲突
            读脏数据
              一个事务读取了另一个事务未提交的修改结果
              读——写冲突
            读值不可复现
              在两次‘读’操作之间插入了另一个事务的‘写’操作
              读——写冲突
          并发控制的正确性准则（什么样的并发执行才是正确的）
            可串行化准则：既要交叉执行，充分利用系统的资源，又要避免访问冲突
          如何避免并发所引起的问题
            传统的方法是加锁，还有一些其他的方法
        调度
          串行调度vs并行调度
          等价的调度
            目标等价
            冲突等价
          可串行化调度
            目标可串行化
            冲突可串行化
        封锁
          加锁协议
            排它锁（eXclusive lock，简记为X锁）
              排它锁又称为写锁
              若事务T对数据对象A加上X锁，则只允许T读取和修改A，其它任何事务都不能再对A加任何类型的锁，直到T释放A上的锁
            共享锁（Share lock，简记为S锁）
              共享锁又称为读锁
              若事务T对数据对象A加上S锁，则其它事务只能再对A加S锁，而不能加X锁，直到T释放A上的S锁
          基本锁的相容矩阵
          合式事务(Well-formed Transaction)
            定义：一个事务如果遵守“先加锁，后操作”的原则，则称此事务为合式事务
            合式事务是保证并发事务的正确执行的基本条件
          两段事务(Two-Phase Transaction)
            在一个事务中，如果所有加锁动作都在所有释放锁动作之前，则称这样的事务是两段事务
          两段封锁协议(two-Phase Locking protocol, 2PL协议)
            定义
              两段封锁协议是指事务分成两个阶段，前一阶段只能申请封锁，后一阶段只能释放封锁，这一规则称为事务的两段封锁协议。
            怎样实现
              在对任何数据进行操作之前要申请并获得锁。加锁不成功，则事务进入等待状态，直到加锁成功才继续执行。当事务释放了一个锁以后，事务进入解锁阶段，在该阶段只能进行解锁操作不能再进行加锁操作
          死锁检测与死锁预防
            死锁检测
              超时法
              等待图法
            死锁防止
              等待-死亡策略
                年老的事务等待年轻的事务
              击伤-等待策略
                年轻的事务等待年老的事务
            发生冲突时，总是以年轻事务作为牺牲品
          多粒度封锁与意向锁
            意向共享锁(Intent Share Lock, IS锁)
              如果对结点N加IS锁，表示它的某些子孙拟加或已加了S锁。
            意向排它锁(Intent Exclusive Lock, IX锁)
              如果对结点N加IX锁，表示它的某些子孙拟加或已加了X锁
            共享意向排它锁(SIX=S+IX, SIX锁)
              如果对结点N加SIX锁，表示对结点N本身加S锁，并准备在它的某些子孙拟加或已加了X锁。
    重点难点
      以后备副本和日志为基础的恢复技术
      提交规则与先记后写规则
      调度的等价性与可串行化调度
      两段事务和两段封锁协议
  第八章 数据库的安全与完整性约束
    知识要点
      数据库安全
        DBMS的安全机制
          视图机制
          存取访问控制
            授权
              授权就是给予用户一定的访问权限
            特权
              系统特权
                授权
                收回特权
              对象特权
                授权
                收回特权
            角色
          审计
          数据加密
      完整性约束
        完整性约束的类型
          静态约束
            固有约束(Inherent Constraints)
              指数据模型固有的约束。e.g. 关系数据模型中的1NF条件，etc.
            隐含约束(Implicit Constraints)
              指隐含在数据模式中的约束，通常需用DDL来申明，约束的定义存于DD中。对关系模型来说，包括：
                域完整性约束(Domain Integrity Constraints)
                  属性值应在域中取值、属性值是否可为NULL
                  NOT NULL
                实体完整性约束(Entity Integrity Constraints)
                  每个关系必须有一个键，每个元组的键值应唯一，且不能为NULL
                  在SQL实现时，可为每个关系选定一个主键（PK）
                  PRIMARY KEY、UNIQUE
                引用完整性约束(Referential Integrity Constraints)
                  一个关系中的FK值必须引用（另一个关系或本关系中）实际存在的PK值，否则只能取NULL
                  REFERENCES、FOREIGN KEY
            显式约束(Explicit Constraints)
              指更为广泛的语义约束，通常与特定的应用领域有关，其需用特定的DDL语句来申明，约束的定义存于DD中
              CHECK、ASSERTION
          动态约束
            对DB状态演变的约束，通常与特定的应用领域有关，其同样需用特定的DDL语句来申明，约束的定义存于DD中
        完整性约束的说明
          隐含约束的说明
            SQL提供相应的DDL语句
          显式约束的说明
            用过程说明约束
            用断言说明约束
            在基表定义中加CHECK子句约束
            用触发器表示约束
        违反这些完整性约束时DBMS将分别采取何种措施
          域完整性约束
          实体完整性约束
          引用完整性约束
          拒绝执行，并报警或报错，并调用相应的函数（例程）进行处理
          禁止；级联；置空
    重点难点
      隐含约束
        域完整性约束；
        实体完整性约束；
        引用完整性约束；
      属性层/元组层的值检查约束；
      断言与全局约束；
      触发器与动态约束
  第九章 触发器与主动数据库系统
    知识要点
      主动数据库系统
        实现主动数据库系统的基本方法是在数据库系统中引入规则机制
        触发器也称ECA规则
      ECA规则（触发器）
        触发器的种类
        触发器在SQL中的表示
          写注释：/*事件，条件，动作*/
        触发器的用途
          完整性约束的维护
          导出数据实时更新
          数据库多副本的一致性的维护
    重点难点
      触发器的 SQL 表示
      触发器的典型应用
  第十章 数据依赖与关系模式规范化
    知识要点
      数据冗余与更新异常
      函数依赖
        决定子
          则称 B 函数依赖于A 或 A 函数决定 B，记为：A → B。A 称为决定子。
        平凡依赖 / 非平凡依赖 / 完全非平凡依赖
        完全依赖 / 部分依赖
        传递依赖
      规范化
        简介
          由于在关系模式R中存在不好的数据依赖（FD），引起数据冗余和更新异常。解决方法：通过分解关系模式来消除其中不合适的数据依赖，这样的模式分解叫做关系模式规范化。
          规范化程度并非越高越好
        范式
          范式层次
          码/键
            键/候选键
              假如当 K 确定的情况下，该表除 K 之外的所有属性的值也就随之确定，那么 K 就是键
                主键PK
                候补键
            超键
              关系模式中包含键的属性(组)称为超键
                如（学号，出生年份，入学年份）
            全键
              主键由所有的属性构成
            主属性
              包含在任何一个键中的属性
            非主属性
            外键FK
          1NF
            全部属性均是原子数据
              数据表中若存在非主属性对于键的部分函数依赖，则数据表最高只符合1NF的要求
          2NF
            若每个非主属性均完全函数依赖于键，则符合2NF的要求
              第一步：找出数据表中所有的码
              第二步：根据第一步所得到的码，找出所有的主属性
              第三步：数据表中，除去所有的主属性，剩下的就都是非主属性了
              第四步：查看是否存在非主属性对码的部分函数依赖
            模式分解
              总有将一个关系模式分解成3NF的无损、且保持依赖的分解
              总有将一个关系模式分解成BCNF(甚至4NF)的无损的分解
          3NF
            决定子X是超键
            被决定子A是主属性
            若R∉3NF，意味着：X不是超键，且A是非主属性
            满足两个条件之一
          BCNF
            决定子X是超键
              决定子X不是超键，则R不是BCNF
            任何全键关系模式必属于BCNF
            任何两属性关系模式必属于BCNF
            关系模式无损分解成BCNF的启发式算法 （细胞分裂法）
    重点难点
      函数依赖的决定子；分裂/合并规则；平 凡/非 平凡/完全非平凡依赖与平凡依赖规则；完全依赖vs. 部分依赖；传递依赖与传递规则；第一范式，第二范式，第三范式，Boyce-Codd 范式；BCNF无损分解的启发式算法； Armstrom 公理的推理规则；逻辑蕴涵；函数依赖集的闭包。
  第十一章 数据库设计
    知识要点
      数据库设计过程
        需求分析
          主要任务：用户需求分析
        概念设计
          主要任务：数学建模
        逻辑设计
          主要任务：设计数据库的概念模式和外模式
            E-R模式
            关系数据库模式
            创建相应基表的SQL DDL语句
        物理设计
          主要任务：设计数据库的内模式
    重点难点：E-R 建模与视图集成；E-R 图向关系数据库模式的转换；基表存储机制的选择
  第十二章 数据库管理
    知识要点：数据库管理；数据库管理员；数据库的调整、重组与重构。
      数据库投入运行一段时间后，为了改善其性能，需要对它进行调整和重组
      有时为了满足用户新的应用需求，需要对数据库进行重构
    重点难点：数据库管理员的职责；数据库的调整、重组与重构。
Copyleft (c) 2020 by 御风.
No rights reserved.
缝缝补补
又是一年
后续如果有人对导图进行更新
记得在这打个日志记录
(如果能有人看见这个笔记的话
范式是符合某种规范化程度的全体关系模式的一个集合