【数据库】数据库系统考试复习整理

文章目录

    • 数据库的定义
    • 数据库的特征
    • 什么是DBMS
    • DBMS的目标
    • DBMS的主要功能
    • 什么是数据库系统
    • 数据库系统的特点
    • 数据视图
      • 数据抽象(Data Abstract)
      • 实例与模式
      • 数据库的三级模式结构
        • 三级模式
        • 两级映像
      • 数据独立性
    • 事务定义
      • 事务特性(ACID)
    • 关系模型中的重要概念
    • E-R模型向关系模式的转换
    • 索引的定义
    • SQL正则表达式
      • SQL正则表达式示例
    • 完整性约束
    • 与日期相关的内容
    • 授权命令
    • 关系数据库设计
      • 第一范式
      • 函数依赖
      • 平凡函数依赖
      • 部分函数依赖
      • 传递函数依赖
      • 逻辑蕴涵
      • 闭包
      • Armstrong公理
      • Armstrong公理推论
      • 算法(计算F下属性集a的闭包)
      • 候选码的求解理论和算法
      • 函数依赖集的等价性
      • 无关属性
      • 检验无关属性的方法
      • 正则覆盖
      • 模式分解
      • 无损连接分解
      • 保持函数依赖的分解
      • 范式
      • 范式之间的关系
      • 关系模式的分解算法
      • 关系模式练习
      • 规范化习题
    • 事务
      • 事务概念
      • 并行 Vs 串行
      • 并发操作带来的数据不一致性
      • 事务的调度
      • 冲突可串行化
      • 冲突可串行化判定
      • 封锁
      • 饿死(活锁)
      • 两阶段封锁协议
      • 基于时间戳的协议
    • 查询优化
      • 等价规则

数据库的定义

数据库(Database,简称DB)是长期储存在计算机内、有组织的可共享的大量数据集合。
数据不是依赖于处理过程的附属品,而是现实世界中独立存在的对象

数据库的特征

  • 数据按一定的数据模型组织、描述和储存
  • 可为各种用户共享
  • 冗余度较小
  • 数据独立性较高
  • 易扩展

什么是DBMS

数据库管理系统(Database Management System,简称DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。是位于用户与操作系统之间的一层数据管理软件。

DBMS的目标

科学地组织和存储数据、高效方便地获取和维护数据。
【数据库】数据库系统考试复习整理_第1张图片

DBMS的主要功能

1、数据定义功能

  • 提供数据定义语言(DDL)
  • 定义数据库中的数据对象

2、数据操纵功能

  • 提供数据操纵语言(DML)
  • 操纵数据实现对数据库的基本操作 (查询、插入、删除和修改)

3、数据库的运行管理

  • 保证数据的安全性、完整性
  • 多用户对数据的并发使用
  • 发生故障后的系统恢复

4、数据库的建立和维护功能

  • 数据库数据批量装载
  • 数据库转储
  • 数据库的重组织
  • 性能监视等

什么是数据库系统

数据库系统(Database System,简称DBS)是指在计算机系统中引入数据库后的系统构成。
在不引起混淆的情况下常常把数据库系统简称为数据库。
数据库系统由数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。

数据库系统的特点

1、面向全组织的复杂的数据结构

  • 支持全企业的应用而不是某一个应用
  • 数据反映了客观事物间的本质联系,而不是着眼于面向某个应用,是有结构的数据。这是数据库系统的主要特征之一,与文件系统的根本差别。

2、数据的冗余度小,易扩充

  • 数据集中管理,数据共享,因此冗余度小
  • 节省存储空间,减少存取时间,且可避免数据之间的不相容性和不一致性

3、具有较高的数据和程序的独立性

  • 把数据库的定义和描述从应用程序中分离出去
  • 数据描述是分级的(全局逻辑、局部逻辑、存储)
  • 数据的存取由系统管理,用户不必考虑存取路径等细节,从而简化了应用程序

4、统一的数据控制功能,数据共享程度高

  • 数据的安全性控制(Security): 用户标识与鉴定,存取控制
  • 数据的完整性控制(Integrity): 完整性约束条件定义和检查
  • 并发控制(Concurrency) : 封锁

数据视图

数据库系统的一个主要目的是给用户提供数据的抽象视图,即系统隐藏关于数据存储和维护的某种细节。

数据抽象(Data Abstract)

1、物理层

  • 最低层次的抽象
  • 描述数据如何存储

2、逻辑层

  • 描述数据及数据间的关系
  • 由DBA使用

3、视图层

  • 描述整个数据库的某一部分
  • 使用户与系统交互更简单

【数据库】数据库系统考试复习整理_第2张图片

实例与模式

  • 实例:特定时刻存储在数据库中的信息的集合称作数据库的一个实例

  • 模式:数据库的总体设计称作数据库模式

  • 型是对数据的结构和属性的说明 ----模式

  • 值是型的一个具体赋值 ----实例

型是相对稳定的,值是随时间不断变化的

数据库的三级模式结构

三级模式

1、物理模式(Physical Schema)
又称存储模式、内模式,是数据的物理结构及存储方式。
2、逻辑模式(Logical Schema)
所有用户的公共数据视图,是数据库全体数据的全局逻辑结构和特性的描述。
3、子模式(Sub-Schema)
用户的数据视图,是数据的局部逻辑结构,模式的子集。

两级映像

1、外模式/模式映象
定义某一个外模式和模式之间的对应关系,映象定义通常包含在各外模式中。
2、模式/内模式映象
定义数据逻辑结构与存储结构之间的对应关系。
【数据库】数据库系统考试复习整理_第3张图片

数据独立性

1、物理数据独立性
存储结构改变时,修改模式/内模式映象,使模式保持不变,从而应用程序可以保持不变,称为数据的物理独立性
2、逻辑数据独立性
当模式改变时,修改外模式/模式映象,使外模式保持不变,从而应用程序可以保持不变,称为数据的逻辑独立性

事务定义

事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。

事务特性(ACID)

1、原子性(Atomicity)

  • 事务中包含的所有操作要么全做,要么全不做
  • 原子性由恢复机制实现

2、一致性(Consistency)

  • 事务的隔离执行必须保证数据库的一致性
  • 事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态
  • 数据库的一致性状态由用户来负责,由并发控制机制实现。如银行转帐,转帐前后两个帐户金额之和应保持不变
  • 事务运行过程中允许暂时的不一致

3、隔离性(Isolation)

  • 系统必须保证事务不受其它并发执行事务的影响
  • 对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行
  • 隔离性通过并发控制机制实现

4、持久性(Durability)

  • 一个事务一旦提交之后,它对数据库的影响必须是永久的
  • 系统发生故障不能改变事务的持久性
  • 持久性通过恢复机制实现

【数据库】数据库系统考试复习整理_第4张图片

关系模型中的重要概念

1、超码(superkey)

  • 是一个或多个属性的集合,这些属性的集合可以使我们在一个关系中唯一地标识一个元组

2、候选码(Candidate Key)

  • 关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码,如关系S中的sno可作为候选码。候选码是最小的超码

3、主码(Primary Key)

  • 进行数据库设计时,从一个关系的多个候选码中选定一个作为主码,如可选定sno作为关系S的主码

4、外部码(Foreign Key)

  • 关系R中的一个属性组,它不是R的主码,但它与关系S的主码相对应,则称这个属性组为R的外部码(R和S可以是同一关系)。如S关系中的dno属性

E-R模型向关系模式的转换

1、联系转化成的表,和实体转化成的表,可以机械地按照下述原则合并:
一对一,联系归任一;多对一,联系归于多;多对多,联系自成表。

  • 二元多对一联系:
    联系转化的表可以和“多端” 实体转化成的表进行合并
  • 二元一对一联系:
    联系转化的表可以任一端实体转化成的表进行合并
    二元一对一联系不能导致相关实体转化成的表合并
  • 二元m:n联系:
    联系转化的表和实体转化的表不能进行合并
  • 多元联系:
    • 联系转化的表和实体转化的表不能进行合并
    • 即便是m:n:1,其转化的表和也不能进行合并

2、实体转化成的表,相互之间不能机械合并
3、联系转化成的表,相互之间不能机械合并

索引的定义

1、格式

create  [unique/distinct]  [cluster]  index  索引名
on  表名 (列名 [asc/desc]  [ , 列名[ asc/desc]])

# 示例:
create  cluster  index   s_sno_clu  on  S(sno)
create  unique  index   s_sno  on  S(sno)
create index   s_sname  on  S(sname)
  • unique(distinct):唯一性索引,不允许表中不同的行在索引列上取相同值。若已有相同值存在,则系统给出相关信息,不建此索引。系统并拒绝违背唯一性的插入、更新
  • cluster:聚集索引,表中元组按索引项的值排序并物理地聚集在一起。一个基本表上只能建一个聚集索引(该索引可以包含多个列)
  • asc/desc:索引表中索引值的排序次序,缺省为asc

2、索引的有关说明

  • 可以动态地定义索引,即可以随时建立和删除索引
  • 不允许用户在数据操作中指定索引,索引如何使用完全由DBMS决定
  • 应该在使用频率高的、经常用于连接的列上建索引
  • 索引实现:B+树,散列(hash)
  • 一个表上可建多个索引。索引可以提高查询效率,但索引过多耗费空间,且降低了插入、删除、更新的效率

SQL正则表达式

  • REGEXP_LIKE(匹配)
  • REGEXP_INSTR (包含)
  • REGEXP_REPLACE(替换)
  • REGEXP_SUBSTR(提取)

SQL正则表达式示例

Select * from table1
        where REGEXP_LIKE(SJHM, '^[1]{1}[35]{1}[[:digit:]]{9}$')
^ 表示开始
$ 表示结束
[]内部为匹配范围
{}里的内容表时个数,有几位
查询手机号码是以 1开头接着是35再加9位的数字 所以这么理解: 
1开头 表达式为 ^[1]{1} 意为 开始1位里包含1
35 表达式为 [35]{1}
9位数字结束 为: [[:digit:]]{9}$ 
这里[:digit:]为特殊写法,代表为数字 再加个结束符$

完整性约束

1、主码约束

  • 主码值不允许空,也不允许出现重复
  • 意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的
    主码定义形式
    主码子句:PRIMARY KEY(sno)
    主码短语:SNO CHAR(4) PRIMARY KEY
    

2、非空约束:要求某属性取值不能为空值
3、唯一性约束

  • unique ( A1, A2, …, Am)
    Unique声明指明下列属性A1, A2, … Am 形成了一个候选码,候选码的属性可以为空(主码的属性不能为空)

4、外码约束(参照完整性)

  • 关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码,如S关系中的dno属性
  • 如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1 中某个元组的Pk 值,或者为空值
  • 意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在
  • 例如关系S在dno上的取值有两种可能
    空值,表示该学生尚未分到任何系中;若非空值,则必须是D关系中某个元组的dno值,表示该学生不可能分到一个不存在的系中
    定义形式
    在SC表中,定义
            FOREIGN KEY (sno)  REFERENCES  S(sno)
    sno在SC中是外码,在S中是主码,sno在SC中取值或为空或为S中某个sno值
    作为主码的关系称为基本(参照)关系,作为外码的关系称为依赖关系
    

5、删除基本关系元组

RESTRICT方式
只有当依赖关系中没有一个外码值与要删除的基本关系的主码值相对应时,才可以删除该元组,否则系统拒绝此删除操作

CASCADE方式
将依赖关系中所有外码值与基本关系中要删除的主码值所对应的元组一起删除

SET NULL方式
删除基本关系中元组时,将依赖关系中与基本关系中被删主码值相对应的外码值置为空值

如FOREIGN KEY (sno) REFERENCES S(sno)  [ON DELETE [RESTRICT |CASCADE | SET NULL] ]

6、修改基本关系主码

RESTRICT方式
只有当依赖关系中没有一个外码值与要修改的基本关系的主码值相对应时,才可以修改该元组主码,否则系统拒绝此次修改

CASCADE方式
将依赖关系中所有与基本关系中要修改的主码值所对应的外码值一起修改为新值

SET NULL方式:
修改基本关系中元组主码时,将依赖关系中与基本关系中被修改主码值相对应的外码值置为空值

如FOREIGN KEY (sno) REFERENCES S(sno)  [ON UPDATE [CASCADE | SET NULL] ]

与日期相关的内容

date:日期,包括年(四位)、月和日
示例:date2014-3-10time:  时间,包括小时, 分和秒
示例:time09:00:30timestamp : datetime 的组合
示例:timestamp2014-3-10 09:00:30interval:时间段
示例:interval1day
两个 date/time/timestamp 类型值相减产生一个interval 类型值
可以在 date/time/timestamp 类型的值上加减interval 类型的值

授权命令

grant 表级权限 on {表名 | 视图名} to 
{用户 [,用户]| public}
 [with grant option]
 
表级权限包括:select, update, insert, delete, index, alter, drop, resource以及它们的总和all,其中对select , update可指定列名
with grant option表示获得权限的用户可以把权限再授予其它用户

# 	示例
grant  select , insert  on  S  to  Liming  
with  grant  option
grant all on  S  to public
grant UPDATE(sno), SELECT ON  S	to U4
grant ALL PRIVILIGES to public

# 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT ON  SC  TO U5  WITH GRANT OPTION

# 回收权限
revoke 表级权限 on {表名 | 视图名} from 
{用户 [,用户]| public}

收回权限时,若该用户已将权限授予其它用户,则也一并收回。授权路径的起点一定是DBA

# 示例
revoke  insert  on  S  from  Liming

关系数据库设计

第一范式

  • 如果某个域的元素被认为是不可再分的单元,那么这个域就是原子的(atomic)。如果一个关系模式R的所有的属性域都是原子的,我们称关系模式R属于第一范式(first normal form, 1NF)

函数依赖

【数据库】数据库系统考试复习整理_第5张图片

平凡函数依赖

【数据库】数据库系统考试复习整理_第6张图片

部分函数依赖

【数据库】数据库系统考试复习整理_第7张图片

传递函数依赖

【数据库】数据库系统考试复习整理_第8张图片

逻辑蕴涵

【数据库】数据库系统考试复习整理_第9张图片

闭包

【数据库】数据库系统考试复习整理_第10张图片

Armstrong公理

【数据库】数据库系统考试复习整理_第11张图片

Armstrong公理推论

【数据库】数据库系统考试复习整理_第12张图片

算法(计算F下属性集a的闭包)

【数据库】数据库系统考试复习整理_第13张图片
闭包算法作用
【数据库】数据库系统考试复习整理_第14张图片

候选码的求解理论和算法

求解一个关系的候选码,是NP问题(为什么?)
下面我们给出简易的方法
对于给定的关系R(U,F),可将其属性分为4类:

  • L类:仅出现在F的函数依赖左部的属性
  • R类:仅出现在F的函数依赖右部的属性
  • N类:在F的函数依赖两边均未出现的属性
  • LR类:在F的函数依赖两边均出现的属性

1、快速求解候选码的充分条件
【数据库】数据库系统考试复习整理_第15张图片
【数据库】数据库系统考试复习整理_第16张图片
【数据库】数据库系统考试复习整理_第17张图片
【数据库】数据库系统考试复习整理_第18张图片

函数依赖集的等价性

【数据库】数据库系统考试复习整理_第19张图片

无关属性

如果去除一个函数依赖中的属性,不会改变该函数依赖集的闭包,则称该属性是无关的(extraneous)
无关属性的核心:能够被函数依赖集F逻辑蕴涵的函数依赖,不必出现在F中。
【数据库】数据库系统考试复习整理_第20张图片

检验无关属性的方法

【数据库】数据库系统考试复习整理_第21张图片

正则覆盖

满足下列条件的函数依赖集F称为正则覆盖,记作Fc:

  • Fc 与 F 等价
  • Fc 中任何函数依赖都不含无关属性
  • Fc 中函数依赖的左半部都是唯一的
    【数据库】数据库系统考试复习整理_第22张图片
    注意:
    1、检查无关属性是在当前函数依赖集合中的函数依赖,而不是F
    2、不能同时讨论F中的两个属性的无关性,一次只能讨 论一个属性
    3、正则覆盖未必唯一

【数据库】数据库系统考试复习整理_第23张图片
【数据库】数据库系统考试复习整理_第24张图片
【数据库】数据库系统考试复习整理_第25张图片

模式分解

【数据库】数据库系统考试复习整理_第26张图片

无损连接分解

【数据库】数据库系统考试复习整理_第27张图片
1、无损连接判别方法–表格法(充分必要条件)

设关系模式R=A1,…,An,R上成立的函数依赖集F,R的一个分解p ={R1,…,Rk}。

  • 无损连接分解的判断步骤如下:
    1、构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式Ri(1≤i≤k)。
    2、如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上符号bij。
    3、把表格看成模式R的一个关系,反复检查F中每个f在表格中是否成立,若不成立,则修改表格中的元素。
    修改方法如下:
    对于F中一个f:X→Y,如果表格中有两行在X分量上相等,在Y分量上不相等,那么把这两行在Y分量上改成相等。如果Y的分量中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中的一个bij替换另一个(尽量把ij改成较小的数,亦即取i值较小的那个)。
    4、若在修改的过程中,发现**表格中有一行全是a,即a1,a2,…,an,那么可立即断定p相对于F是无损连接分解,此时不必再继续修改。**若经过多次修改直到表格不能修改之后,发现表格中不存在有一行全是a的情况,那么分解就是有损的。
    【数据库】数据库系统考试复习整理_第28张图片
    【数据库】数据库系统考试复习整理_第29张图片
    【数据库】数据库系统考试复习整理_第30张图片
    【数据库】数据库系统考试复习整理_第31张图片
    【数据库】数据库系统考试复习整理_第32张图片
    【数据库】数据库系统考试复习整理_第33张图片
    【数据库】数据库系统考试复习整理_第34张图片

2、无损连接判别方法—快速法
【数据库】数据库系统考试复习整理_第35张图片
判断交集是否为R1或R2的超码,若是,则为无损分解;否则为有损分解!
【数据库】数据库系统考试复习整理_第36张图片

保持函数依赖的分解

【数据库】数据库系统考试复习整理_第37张图片
为了避免计算F+,给出一种更有效的算法。思想如下:通过使用修改后的属性闭包的形式,判断F上的每一个函数依赖α–>β在分解中是否被保持
【数据库】数据库系统考试复习整理_第38张图片
【数据库】数据库系统考试复习整理_第39张图片

【数据库】数据库系统考试复习整理_第40张图片
【数据库】数据库系统考试复习整理_第41张图片
【数据库】数据库系统考试复习整理_第42张图片
【数据库】数据库系统考试复习整理_第43张图片
【数据库】数据库系统考试复习整理_第44张图片
【数据库】数据库系统考试复习整理_第45张图片

范式

  • 范式是对关系的不同数据依赖程度的要求
  • 通过模式分解将一个低级范式转换为若干个高级范式的过程称作规范化
    【数据库】数据库系统考试复习整理_第46张图片

1、第一范式(1NF)

关系中每一分量不可再分。即不能以集合、序列等作为属性值。

2、第二范式(2NF)

若 R 为 1NF,且每个属性满足下列准则之一:

  • 它出现在一个候选码中
  • 它没有部分依赖于一个候选码

即 消除非主属性对码的部分依赖

3、第三范式(3NF)
【数据库】数据库系统考试复习整理_第47张图片
即 消除非主属性对码的传递依赖

4、BCNF
【数据库】数据库系统考试复习整理_第48张图片
BCNF的本质
【数据库】数据库系统考试复习整理_第49张图片
判断一个关系是否属于BCNF

  • 检查非平凡的函数依赖α->β是否违反BCNF,即检查α+,并验证它是否包含了R上的所有属性,判断α是否是R的超码
  • 检查关系模式R是否属于BCNF,仅需要检查给定集合F上的函数依赖,不需要检查F+。因为如果F上没有函数依赖违反BCNF,则F+上也不会有函数依赖违反BCNF。

4、第四范式(4NF)

【数据库】数据库系统考试复习整理_第50张图片
【数据库】数据库系统考试复习整理_第51张图片

范式之间的关系

  • 1NF:数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。
  • 2NF:1NF的基础上,非码属性必须完全依赖于码。在1NF基础上消除非主属性对主码的部分函数依赖
  • 3NF:在1NF基础上,任何非主属性不依赖于其它非主属性。在2NF基础上消除传递依赖
  • BCNF:在1NF基础上,任何非主属性不能对主键子集依赖,在3NF基础上消除对主码子集的依赖
  • 4NF:在多值依赖的视角评价关系模式

并不是规范化程度越高,模式就越好,必须结合应用环境和现实世界的具体情况合理地选择数据库模式

关系模式的分解算法

1、达到3NF且保持函数依赖的分解
达到3NF且保持函数依赖的分解
【数据库】数据库系统考试复习整理_第52张图片
2、3NF综合算法
【数据库】数据库系统考试复习整理_第53张图片
即 在进行保持函数依赖的3NF分解后,若分解得到的 Ri 中,包含候选码,即为无损分解;否则再添加一个只包含 候选码 的Rj分解即可。

3NF分解算法要注意的问题:

  • Step2必须是对Fc中的函数依赖构造关系(不能是F中函数依赖)
  • 必须进行Step3的检查并在必要时构造候选码关系模式,否则,分解不是无损分解

3、达到BCNF无损连接分解算法
【数据库】数据库系统考试复习整理_第54张图片
4、达到4NF无损连接分解算法
【数据库】数据库系统考试复习整理_第55张图片

关系模式练习

【数据库】数据库系统考试复习整理_第56张图片
【数据库】数据库系统考试复习整理_第57张图片
【数据库】数据库系统考试复习整理_第58张图片

规范化习题

1、涉及到学生、教师和课程关系模式STC(SNO,SN,SA,TN,CN,G),其中6个属性分别为学生的学号、姓名、年龄、教师的姓名、课程名以及学生的成绩。假设 学生有重名,课程名也可能有重名。又假设教师无重名,且每个教师只教一门课程,但一门课程可有几个教师同时开设。某个学生选定某门课后,其上课教师就固定了。要求:
(1)写出键码和函数依赖
(2)分解关系模式使之属于BC范式

候选码:(SNO,CN)和(SNO,TN)
SNO->SN, SNO->SA , TN->CN, (SNO,CN)->TN, (SNO,CN)->G, (SNO,TN)->G
STC(SNO, TN,G) S(SNO,SN,SA) T(TN,CN)

2、有关系模式:Student(学号,姓名,所在系,班号,班主任,系主任),其语义为:一个学生只在一个系的一个班学习,一个系只有一个系主任,一个班只有一名班主任。指出此关系模式的候选码。判断此关系模式是第几范式,若不是三范式,将其规范为三范式。

函数依赖有:学号→ 姓名 学号→ 所在系,学号→班号,班号→班主任,
所在系→系主任
候选码:学号 是2NF不是3NF
Student(学号,姓名,所在系,班号)
Student1(班号,班主任)
Student2(所在系,系主任)

3、假设某商业集团数据库中有关系模式如下:
R(商店编号,商品编号,商品库存数量,部门编号,负责人)
如果规定:
每个商店的每中商品只在该商店的一个部门中销售。
每个商店的每个部门只有一位负责人。
每个商店的每种商品只有一个库存数量。
试回答下列问题:
(1)根据上述规定,写出关系模式R的基本函数依赖。
(2)找出关系模式R的候选码。
(3)试问关系模式R最高已经达到第几范式,为什么?
(4)如果关系模式不属于3NF,试将R分解成3NF。
函数依赖:(商店编号,商品编号)→部门编号,(商店编号,部门编号)→负责人
(商店编号,商品编号)→商品库存数量
候选码:(商店编号,商品编号)
不是3NF: R1(商店编号,商品编号,商品库存数量,部门编号)
R2(商店编号,部门编号,负责人)
4、假设我们有关系模式:管理(仓库号,设备号,职工号),它所包含的语义是:一个仓库可以有多个职工;一名职工仅在一个仓库工作;在每个仓库一种设备仅由一名职工保管,但每名职工可以保管多种设备。请根据语义写出函数依赖,求出候选码。判断此关系模式是否属于3NF,是否属于BC范式。
5、假设你有一个名为TRANSACTION的关系模式如下,用來记载读者买书的交易:
TRANSACTION (isbn, title, publisherId, publisherName, readerId, name, dateTime, unitPrice, number)
函数依赖如下:
isbn { title, publisherId }
publisherId { publisherName }
readerId name
{ isbn, readerId, dateTime }{unitPrice, number}
(1)请问关系的候选码为?
(2)请分解满足2NF的关系模式
(3)请分解满足3NF的关系模式
6、已知R<U,F>U={A,B,C,D,E,F},F={AB->C, C->D, D->E,D-> F}
(1)请找出R的候选关键码。
(AB)
(2)判断此关系属于第几范式,将R分解成3NF。
2NF, U(A,B,C) ,U1(C,D),U2(D,E,F)
(3)将R分解成BC范式
U(A,B,C), U1(C,D),U2(D,E,F)
7、设有关系模式R(A,B,C,D,E,P),模式中有函数依赖集F={A→D,E→D,D→B,BC→D,DC→P}。
(1)请找出R的候选关键码。
(AEC)
(2)将R分解成3NF。
2NF (A,D,B)(E,D,B)(D,C,P)(A,E,D)(A,C,D)(E,C)(A,E,C)
(3)将R分解成BC范式
8、已知关系模式R中,U={A,B,C,D, E, G},
F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG},
求(BD)+,判断BD→AC是否属于F+,并判断BD是否为候选码
解:(BD)+=BDEGCA
结论:(BD)+=ABCDEG,BD→AC可由F导出,即BD→AC属于F+

9、已知关系模式R中
U={A,B,C,E, H, P, G},
F={AC→PE, PG→A, B→CE, A→P, GA→B,GC→A, PAB→G, AE→GB, ABCP→H},
证明BG→HE属于F+
证:因为,(BG)+ =ABCEHPG,
所以BG→HE可由F导出,即BG→HE属于F+

事务

事务概念

1、事务定义

  • 事务是访问并可能更新各种数据项的一个程序执行单元。
  • 这些操作要么都做,要么都不做,是一个不可分割的工作单位。 例如银行转帐

2、SQL中事务的定义

  • Commit work表示提交,事务正常结束
  • Rollback work表示事务非正常结束,撤消事务已完成的操作,回滚到事务开始时状态

【数据库】数据库系统考试复习整理_第59张图片

并行 Vs 串行

1、基本比较

  • 并行事务会破坏数据库的一致性
  • 串行事务效率低

2、并行的优点

  • 一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量(throughput)
  • 系统中存在着周期不等的各种事务,串行会导致难于预测的延迟。如果各个事务所涉及的是数据库的不同部分,采用并行会减少平均响应时间(average response time)

3、核心问题

  • 在保证一致性的前提下最大限度地提高并发度

并发操作带来的数据不一致性

1、丢失修改(lost update)

  • 丢失修改是指事务1与事务2从数据库中读入同一数据并修改,事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。
    【数据库】数据库系统考试复习整理_第60张图片

2、不可重复读(non-repeatable read)

  • 不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。
    【数据库】数据库系统考试复习整理_第61张图片

3、读“脏”数据(dirty read)

  • 事务1修改某一数据,并将其写回磁盘,事务2读取同一数据后,事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值,事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。
    【数据库】数据库系统考试复习整理_第62张图片

事务的调度

事务的执行顺序称为一个调度(schedule),表示事务的指令在系统中执行的时间顺序

一组事务的调度必须保证

  • 包含所有事务的操作指令
  • 一个事务中指令的顺序必须保持不变

串行调度

  • 在串行调度中,属于同一事务的指令紧挨在一起
  • 对于有n个事务的事务组,可以有n!个有效调度

并行调度

  • 在并行调度中,来自不同事务的指令可以交叉执行
  • 当并行调度等价于某个串行调度时,则称它是正确的

冲突可串行化

当一个调度S与一个串行调度冲突等价时,则称该调度S是冲突可串行化的(conflict serializable)

冲突可串行化判定

优先图(precedence graph)

一个调度S的优先图是这样构造的:它是一个有向图G =(V,E),V是顶点集,E是边集。
顶点集由所有参与调度的事务组成,边集由满足下述条件之一的边Ti -> Tj组成:
①在Tj执行read(Q)之前,Ti执行write(Q) 
②在Tj执行write(Q)之前,Ti执行read(Q)
③在Tj执行write(Q)之前,Ti执行write(Q)

【数据库】数据库系统考试复习整理_第63张图片
如果优先图中存在边Ti->Tj ,则在任何等价于S的串行调度S’中,Ti都必须出现在Tj之前

冲突可串行化判定准则

如果调度S的优先图中有环,则调度S是非冲突可串行化的。如果图中无环,则调度S是冲突可串行化的。

与冲突可串行化等价的串行顺序
串行顺序可由拓扑排序得到,求出与优先图的偏序相一致的线序

【数据库】数据库系统考试复习整理_第64张图片

封锁

封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。

饿死(活锁)

  • 饥饿/饿死
    不断出现的申请并获得S锁的事务,使申请X锁的事务一直处在等待状态;
  • 饥饿的防止
    对申请S锁的事务,如果有先于该事务且等待的加X锁的事务,令申请S锁的事务等待

两阶段封锁协议

  • 保证可串行性的封锁协议

  • 定义:每个事务分两个阶段提出加锁和解锁申请
    -增长阶段(growing phase):事务可以获得锁,但不能释放锁
    -缩减阶段(shrinking phase) :事务可以释放锁,但不能获得新锁

  • 封锁点,lock point,:
    事务最后加锁的位置,称为事务的封锁点, 记作Lp(T)

  • 并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。

  • 所有遵守两段锁协议的事务,其并行执行的结果一定是正确的

  • 事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件
    可串行化的调度中,不一定所有事务都必须符合两段锁协议。

定理:
两阶段保证调度冲突可串行化;
证明:
	反证法,假设调度{T1,T2,…,Tn}遵从两阶段封锁协议,但不冲突可串行化。
	1、不冲突可串行化,优先图必有环;不妨设
		T1,T2,..,Tm,T1是优先图的一个环。
	2、如果优先图有边Ti→Tj,必有:
		Lp(Ti)

基于时间戳的协议

基本思想:

  • 开始早的事务不能读开始晚的事务写的数据
  • 开始早的事务不能写开始晚的事务已经读过或写过的数据

时间戳排序协议的目标:

  • 令调度冲突等价于按照事务开始早晚次序排序的串行调度

时间戳协议性质和特点

  • 保证冲突可串行化
  • 冲突可串行化的调度不一定能被时间戳排序协议调度出来
  • 无死锁
  • 存在饥饿/饿死现象
    (事务可能被反复回滚、重启)
  • 不能保证可恢复性
    (可以扩展协议以保证可恢复性,如跟踪提交依赖等)

保证任何有冲突的read或write操作按时间戳顺序执行

1、假设事务Ti发出read(Q)

  • 如果TS(Ti)< W-timestamp(Q),则Ti需读入的Q值已被覆盖。因此,read操作被拒绝,Ti回滚
  • 如果TS(Ti)>= W-timestamp(Q),则执行read操作,R-timestamp(Q)被设为R-timestamp(Q)和TS(Ti)两者的最大值

2、假设事务Ti发出write(Q)

  • 如果TS(Ti)< R-timestamp(Q),则Ti产生的Q值是先前所需要的值,且系统已假定该值不会被产生。因此,write操作被拒绝,Ti回滚
  • 如果TS(Ti)< W-timestamp(Q),则Ti试图写入的Q值已过时。因此,write操作被拒绝,Ti回滚
  • 否则,执行write操作,将W-timestamp(Q)设为TS(Ti)

示例1
【数据库】数据库系统考试复习整理_第65张图片
【数据库】数据库系统考试复习整理_第66张图片
【数据库】数据库系统考试复习整理_第67张图片
【数据库】数据库系统考试复习整理_第68张图片
【数据库】数据库系统考试复习整理_第69张图片
【数据库】数据库系统考试复习整理_第70张图片

查询优化

在所有等效执行计划中选择具有最小查询执行代价的计划

  • 查询处理的代价可以通过该查询对各种资源的使用情况进行度量
    这些资源包括磁盘存取,执行一个查询所用 CPU 时间,甚至是网络通信代价
  • 在磁盘上存取数据的代价通常是主要代价。通过以下指标来对其进行度量:
    1、搜索磁盘次数 * 平均寻道时间
    2、读取的块数 * 平均块读取时间
    3、写入的块数 * 平均块写入时间

给定一个关系代数表达式,查询优化器的任务是产生一个查询执行计划,该计划能获得与原关系表达式相同的结果,并且得到结果集的执行代价最小。

  • 基于代价的优化的步骤
    1、使用等价规则产生逻辑上的等价表达式
    2、注解结果表达式来得到替代查询计划
    3、基于代价估计选择代价最小的计划

等价规则

【数据库】数据库系统考试复习整理_第71张图片
【数据库】数据库系统考试复习整理_第72张图片
【数据库】数据库系统考试复习整理_第73张图片
【数据库】数据库系统考试复习整理_第74张图片
【数据库】数据库系统考试复习整理_第75张图片
【数据库】数据库系统考试复习整理_第76张图片
【数据库】数据库系统考试复习整理_第77张图片
【数据库】数据库系统考试复习整理_第78张图片
【数据库】数据库系统考试复习整理_第79张图片
【数据库】数据库系统考试复习整理_第80张图片

你可能感兴趣的:(数据库,数据库,oracle,mysql)