数据库系统概论(第5版)王珊 详细知识清单 期末复习速成 考前冲刺 面试——(第二篇 设计与系统篇)

上接 数据库系统概论(第5版)王珊 详细知识清单 期末复习速成 考前冲刺 面试——(第一篇 基础篇

目录

六.关系数据理论

1.问题提出

2.规范化

2.1函数依赖

2.2码 

2.4多值依赖

2.5 数据依赖的公理系统 

2.6求闭包方法

 2.7模式分解

七.数据库设计

1.数据库设计 

1.1 数据库设计的特点 :

2.数据库设计的基本步骤

 3.概念结构设计(E-R模型)

 4.逻辑结构设计(E-R图向关系模型的转换)

5.物理结构设计

6.数据库的实施和维护 

 八.数据库编程

1.嵌入式SQL

2.游标

 3. 建立和关闭数据库连接

4. 存储过程和函数

 十.数据库恢复技术

1.事物

2. 恢复的实现技术

3.恢复策略 

十一.并发控制 

1.并发控制:

2.并发调度的可串行性 

3.  两段锁协议 

4.封锁力度 


六.关系数据理论

1.问题提出

数据依赖的主要类型:

函数依赖(Functional Dependency,简记为FD)

多值依赖(Multivalued Dependency,简记为MVD)

存在的问题

1. 数据冗余太大(浪费空间)

2. 更新异常

3. 插入异常     

 4. 删除异常

2.规范化

规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题

2.1函数依赖

 平凡函数依赖与非平凡函数依赖

在关系模式R(U)中,对于U的子集X和Y,

如果X→Y,但Y \nsubseteqX,则称X→Y是非平凡的函数依赖

若X→Y,但Y \subseteq X,   则称X→Y是平凡的函数依赖

例:在关系SC(Sno, Cno, Grade)中,
   非平凡函数依赖: (Sno, Cno) → Grade
   平凡函数依赖:   (Sno, Cno) → Sno 
                   (Sno, Cno) → Cno

 完全函数依赖与部分函数依赖

 在R(U)中,

如果X→Y,并且对于X的任何一个真子集X’,都有X’ \rightharpoondownY, 则称Y对X完全函数依赖,记作      X \rightharpoondownY。  

若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X   P   Y。

关系SC(Sno, Cno, Grade)中
(Sno,Cno)→Grade是完全函数依赖,
(Sno,Cno)→Sdept是部分函数依赖
         因为Sno →Sdept成立,且Sno是(Sno,Cno)的真子集

  传递函数依赖

在R(U)中,如果X→Y(Y \nsubseteqX) ,Y→X,Y→Z,Z \nsubseteqY,则称Z对X传递函数依赖。     记为:X → Z

 注: 如果Y→X, 即X←→Y,则Z直接依赖于X。

例: 在关系Std(Sno, Sdept, Mname)中,有:
	  Sno → Sdept,Sdept → Mname
      Mname传递函数依赖于Sno

2.2码 

设K为R<U,F>中的属性或属性组合。若K \rightarrow U,  则K称为R的一个侯选码(主属性)

      若候选码多于一个,则选定其中的一个做为主码

2.3范式 

范式的种类:    

第一范式(1NF)           第二范式(2NF)             第三范式(3NF)                BC范式(BCNF)                  第四范式(4NF)            第五范式(5NF)

范式的关系:

 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化

 定义  若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF

 若R∈2NF,且它的任何一个非主属性都不传递地依赖于任何候选键,则R∈3NF。

     若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。 

 采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

定义  关系模式R<U,F>∈1NF,若X→Y且Y \nsubseteq X时X必含有码,则R<U,F> ∈BCNF。

 推论一:任何二元关系模式的最高范式必定是BCNF。          (因为X必含有候选码)

推论二:如果R只有一个候选码,则R∈3NF,R必属于BCNF。

如果R∈3NF,且R只有一个候选码     R ∈BCNF  \rightleftharpoons R ∈3NF

2.4多值依赖

平凡多值依赖和非平凡的多值依赖     

若X→→Y,而Z=ϕ(空),则称      X→→Y为平凡的多值依赖     

否则称X→→Y为非平凡的多值依赖

规范化小结:

目的:尽量消除插入、删除异常,修改复杂,数据冗余

基本思想:逐步消除数据依赖中不合适的部分

                采用“一事一地”的模式设计原则

实质:概念的单一化

2.5 数据依赖的公理系统 

自反律,增广率,传递率

2.6求闭包方法

 2.7模式分解

三种模式分解等价的定义:     

⒈.分解具有无损连接性     

⒉.分解要保持函数依赖     

⒊.分解既要保持函数依赖,又要具有无损连接性

七.数据库设计

1.数据库设计 

是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,

 数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境

1.1 数据库设计的特点 :

"三分技术,七分管理,十二分基础数据"

2.数据库设计的基本步骤

数据库设计分6个阶段

  1. 需求分析
  2. 概念结构设计 ————绘制E-R图
  3. 逻辑结构设计————( E-R图向关系模型的转换)设计用户模式(外模式),优化
  4. 物理结构设计————(存储结构,存取方法,设计关系,索引,内模式)
  5. 数据库实施—————建立实际数据库结构,试运行,装入数据
  6. 数据库运行和维护————性能监测,转存,恢复

数据字典

数据字典的内容:

  • 数据项(最小组成单位)
  • 数据结构( 若干个数据项可以组成一个数据结构)
  • 数据流
  • 数据存储
  • 处理过程

数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容

 3.概念结构设计(E-R模型)

实体:矩形                属性:椭圆                        联系:菱形

实体之间的联系

(1)两个实体型之间的联系:

①一对一联系(1∶1)

②一对多联系(1∶n)

③多对多联系(m∶n)

 某个工厂物资管理的概念模型。物资管理涉及的实体有:

  • 仓库:属性有仓库号、面积、电话号码
  • 零件:属性有零件号、名称、规格、单价、描述
  • 供应商:属性有供应商号、姓名、地址、电话号码、账号
  • 项目:属性有项目号、预算、开工日期
  • 职工:属性有职工号、姓名、年龄、职称

这些实体之间的联系如下:  

(1) 一个仓库可以存放多种零件,一种零件可以存放在多个 仓库中,因此仓库和零件具有多对多的联系。用库存量 来表示某种零件在某个仓库中的数量。

(2) 一个仓库有多个职工当仓库保管员,一个职工只能在一 个仓库工作,因此仓库和职工之间是一对多的联系。

(3) 职工之间具有领导与被领导关系。即仓库主任领导若 干保管员,因此职工实体型中具有一对多的联系。

(4) 供应商、项目和零件三者之间具有多对多的联系。即一 个供应商可以供给若干项目多种零件,每个项目可以使 用不同供应商供应的零件,每种零件可由不同供应商供给。

 E-R图的集成

E-R图的集成一般需要分两步  

合并:解决各分E-R图之间的冲突,将分E-R图合并起来生成初步E-R图。  

修改和重构:消除不必要的冗余,生成基本E-R图。

子系统E-R图之间的冲突主要有三类

①属性冲突 ②命名冲突 ③结构冲突 

 4.逻辑结构设计(E-R图向关系模型的转换)

优化:

常用分解方法:

水平分解(把(基本)关系的元组分为若干子集合

 垂直分解(把属性分解为若干子集合,形成若干子关系模式。

5.物理结构设计

数据库物理设计的步骤  :

1.确定数据库的物理结构 (在关系数据库中主要指存取方法和存储结构; ) 

2.对物理结构进行评价

关系数据库物理设计的内容:

  • 为关系模式选择存取方法(建立存取路径)
  • 设计关系、索引等数据库文件的物理存储结构

 数据库管理系统常用存取方法 :

1. B+树索引存取方法 

2. Hash索引存取方法    (等值连接,等值比较)

3. 聚簇存取方法        (修改少时选用)

存储结构

确定数据库物理结构主要指确定数据的存放位置存储结构,包括:确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。

确定数据的存放位置和存储结构要综合考虑存取时间存储空间利用率维护代价3个方面的因素。

6.数据库的实施和维护 

数据装载方法:

  • 人工方法
  • 计算机辅助数据入库

主要工作包括:

  • 功能测试
  • 性能测试

数据库的转储和恢复:

  • 在数据库试运行阶段,系统还不稳定,硬、软件故障随时都可能发生
  • 系统的操作人员对新系统还不熟悉,误操作也不可避免
  • 因此必须做好数据库的转储和恢复工作,尽量减少对数据库的破坏

 八.数据库编程

1.嵌入式SQL

SQL语言提供了两种不同的使用方式 :交互式   嵌入式

处理过程: 预编译方法

主语言为C语言时:语句格式: EXEC SQL <SQL语句>;

主语言为java语言时:语句格式: #SQL{  <SQL语句>};

主变量的类型

输入主变量 由应用程序对其赋值,SQL语句引用

输出主变量 由SQL语句对其赋值或设置状态信息,返回给应用程序

指示变量的用途:

  • 指示输入主变量是否为空值
  • 检测输出变量是否为空值,值是否被截断

2.游标

  • 游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
  • 每个游标区都有一个名字
  • 用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理

 3. 建立和关闭数据库连接

(1)建立数据库连接     

EXEC SQL CONNECT TO target[AS connection-name][USER user-name];

  • target是要连接的数据库服务器

常见的服务器标识串,如<dbname>@<hostname>:<port>

包含服务器标识的SQL串常量

DEFAULT  

  • connect-name是可选的连接名,连接名必须是一个有效的标识符
  • 在整个程序内只有一个连接时可以不指定连接名
  • 程序运行过程中可以修改当前连接         EXEC SQL SET CONNECTION connection-name            |DEFAULT;

(2)关闭数据库连接   

 EXEC SQL DISCONNECT [connection];

不用游标的SQL语句的种类: 

  • 说明性语句  
  • 数据定义语句  
  • 数据控制语句  
  • 查询结果为单记录的SELECT语句  
  • 非CURRENT形式的增删改语句

使用游标的步骤

(1)说明游标

(2)打开游标

(3)推进游标指针并取当前记录

(4)关闭游标

4. 存储过程和函数

存储过程的优点

(1)运行效率高

(2)降低了客户机和服务器之间的通信量    

(3)方便实施企业规则

存储过程的用户接口

(1)创建存储过程

(2)执行存储过程

(3)修改存储过程

(4)删除存储过程  

(1)创建存储过程
CREATE OR REPLACE PROCEDURE 过程名([参数1,参数2,...])
 AS <过程化SQL块>;
(2)执行存储过程
	 CALL/PERFORM  PROCEDURE 过程名([参数1,参数2,...]);
(3)修改存储过程
    ALTER PROCEDURE 过程名1  RENAME TO 过程名2;
(4)删除存储过程
    DROP  PROCEDURE 过程名();

 1. 函数的定义语句格式

CREATE OR REPLACE FUNCTION 函数名 ([参数1,参数2,…]) RETURNS <类型>  AS <过程化SQL块>;

2. 函数的执行语句格式

CALL/SELECT 函数名 ([参数1,参数2,…]);

3. 修改函数

重命名 ALTER FUNCTION 过程名1 RENAME TO 过程名2;

重新编译 ALTER FUNCTION 过程名 COMPILE;

创建存储过程

Create  Procedure 存储过程名
    [{@参数名 数据类型}[默认值][Output]]
          [, …n ]
    [WITH {Recompile |Encryption|
           Recompile , Encryption }]
   AS  
       SQL语句 […n ]

创建一个带输入参数的存储过程 

查询某一学生选课的详细信息,参数为学生名

create procedure  p1 @pname char(20)
   as
select student.sno,sname,sdept,sc.cno,cname,grade
from student 
  left join sc on student.sno=sc.sno
  left join course on sc.cno=course.cno
where sname=@pname
go

创建一个带输入参数的存储过程

查询某一年龄范围内的学生信息

create procedure  p2
   @bage int=18,
   @eage int=20
as
  Select * 
  from student
  where sage between @bage and @eage
go

计算某一个工程所使用的零件总数,输入工程号,输出数量

IF EXISTS (SELECT name FROM sysobjects                                    
WHERE name='p3' AND type='P') 
   DROP PROCEDURE p3
Go
create procedure  p3
  @pjno char(8),            -- 指定输入参数 
  @pnum int output          -- 指定输出参数 
as
     DECLARE @ErrorSave INT-- 声明并初始化一个变量来保存@@ERROR的值
  SET @ErrorSave = 0
  Select @pnum=sum(qty) from spj where jno=@pjno
     IF (@@ERROR <> 0)   
     SET @ErrorSave = @@ERROR
     RETURN @ErrorSave   -- 如果没有错误返回0,否则返回错误号 
go

 十.数据库恢复技术

1.事物

事物:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位

 事务和程序比较 :

在关系数据库中,一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序。

一个程序通常包含多个事务

显式定义方式
   BEGIN TRANSACTION                   BEGIN TRANSACTION
          SQL 语句1                                             SQL 语句1
          SQL 语句2                                             SQL 语句2
          。。。。。                                            。。。。。
   COMMIT     ——————提交                                    ROLLBACK  ——————回滚

事务的ACID特性:

  • 原子性(Atomicity)——一个事务中的所有操作要么都执行,要么都不执行
  • 一致性(Consistency)——事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态。
  • 隔离性(Isolation)——一个事务内部的操作及使用的数据对其他并发事务是 隔离的;一个事务的执行不能被其他事务干扰。
  • 持续性(永久性)(Durability )——当一个事务已提交,它对数据库中数据的改变应是永久性的;接下来的其他操作或故障不应该对其执行结果有任何影响。

 事务是恢复和并发控制的基本单位

保证事务的ACID特性是事务处理的重要任务。

故障的种类:

  • 事务内部的故障
  • 系统故障
  • 介质故障
  • 计算机病毒

 事务故障的恢复:撤消事务(UNDO)

系统故障的常见原因:

  • 特定类型的硬件错误(如CPU故障)
  • 操作系统故障
  • DBMS代码错误
  • 系统断电

故障小结:

各类故障,对数据库的影响有两种可能性

一是数据库本身被破坏

二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。

2. 恢复的实现技术

 恢复操作的基本原理:冗余

如何建立冗余数据

  • 数据转储(backup)
  • 登录日志文件(logging)

 什么是日志文件?

日志文件(log)是用来记录事务对数据库的更新操作的文件

日志文件的格式:

以记录为单位的日志文件

以数据块为单位的日志文件

3.恢复策略 

事物故障的恢复:

恢复方法: 由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改

恢复步骤:

1. 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。

2. 对该事务的更新操作执行逆操作。 

3. 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。

4. 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。

 系统故障的恢复:

恢复方法 :

1. Undo 故障发生时未完成的事务

2. Redo 已完成的事务

介质故障恢复方法:

1.重装数据库

2.重做已完成的事务

十一.并发控制 

1.并发控制:

就是采用正确的事务调度方法,使一个事务的执行不受其它事务的干扰,避免造成数据的不一致性

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

  • 丢失修改(Lost Update)
  • 不可重复读(Non-repeatable Read)
  • 读“脏”数据(Dirty Read)

数据不一致性:由于并发操作破坏了事务的隔离性 

并发控制的主要技术:

  • 封锁(Locking)
  • 时间戳(Timestamp)
  • 乐观控制法
  • 多版本并发控制(MVCC)

基本封锁类型 :

排它锁(Exclusive Locks,简记为X锁)————写锁

共享锁(Share Locks,简记为S锁) —————读锁

 锁可用LOCK_S(Q),LOCK_X(Q)申请,用UNLOCK(Q)释放。

 一级封锁协议     事务T 在修改数据R 之前必须先对其加X 锁,直到事务结束才释放。

二级封锁协议      一级封锁协议加上事务T 在读取数据R 之前必须先对其加S 锁,读完后即可释放S 锁。

三级封锁协议    一级封锁协议加上事务T 在读取数据R 之前必须先对其加S 锁,直到事务结束才释放。

避免活锁:采用先来先服务的策略 

预防死锁的方法:

  一次封锁法(一次封锁所有数据对象)

 顺序封锁法(按一定次序封锁数据对象)

2.并发调度的可串行性 

可串行化(Serializable)调度:

多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同

 冲突可串行化:

冲突操作:

冲突操作是指不同的事务对同一个数据的读写操作和写写操作

Ri (x)与Wj(x)  /* 事务Ti读x,Tj写x,其中i≠j */

Wi(x)与Wj(x)  /* 事务Ti写x,Tj写x ,其中i≠j */

其他操作是不冲突操作

不同事务的冲突操作和同一事务的两个操作不能交换(Swap)

 可串行化调度的充分条件 :

一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc’,如果Sc’是串行的,称调度Sc为冲突可串行化的调度

[例]今有调度
     Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)
把w2(A)与r1(B)w1(B)交换,得到:
    r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)
再把r2(A)与r1(B)w1(B)交换:
Sc2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)

由于Sc2等价于一个串行调度T1,T2,所以Sc1是冲突可串行化的调度
[例] 有3个事务
       T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)
调度L1=W1(Y)W1(X)W2(Y)W2(X) W3(X)是一个串行调度。
调度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不满足冲突可串行化。但是调度L2是可串行化的,因为L2执行的结果与调度L1相同,Y的值都等于T2的值,X的值都等于T3的值 

3.  两段锁协议 

 封锁协议规则

  • 何时申请封锁
  • 持锁时间
  • 何时释放封锁等

 “两段”锁的含义 :

 第一阶段是获得封锁,也称为扩展阶段

第二阶段是释放封锁,也称为收缩阶段

4.封锁力度 

 封锁对象的大小称为封锁粒度

封锁的粒度越小、并发度越高、系统开销越大

两种方式封锁:显式封锁和隐式封锁

小结 :

  • 数据库的并发控制以事务为单位
  • 数据库的并发控制通常使用封锁机制
  • 基本封锁 多粒度封锁  
  • 活锁和死锁

活锁: 先来先服务  

死锁:

预防方法 :

  • 一次封锁法
  • 顺序封锁法  

死锁的诊断与解除

  • 超时法
  • 等待图法

 上接数据库系统概论(第5版)王珊 详细知识清单 期末复习速成 考前冲刺 面试——(第一篇 基础篇)_字母符号数字的博客-CSDN博客

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《CSDN数据库系统概论王珊电子》是一本介绍数据库系统概念和原理的电子书。该书由王珊编写,适用于计算机科学与技术相关专业的学生和从业者。 该电子书分为多个章节,从数据库基本概念入手,逐渐介绍了数据库的结构、设计、管理和应用。首先,书中详细介绍了数据库的定义、分类和特点,让读者对数据库的基本概念有了初步理解。接着,书中讲解了关系数据库的模型和关系代数,帮助读者了解了数据库系统的基本原理和操作。 在数据库设计方面,该书介绍了实体关系模型、关系模式、关键字和范式等概念。读者可以学习如何进行表的设计和规范化,从而提高数据库的性能和可靠性。此外,书中还介绍了SQL语言,包括SQL的基本语法和常用操作,读者可以通过学习这些内容来实现对数据库的查询、插入、更新和删除等操作。 在数据库管理方面,该书介绍了数据库的物理结构和索引技术,以及数据库的安全性和完整性保护。读者可以学习如何对数据库进行备份和恢复,以及如何进行性能优化和故障处理。 最后,该书还介绍了数据库系统在实际应用中的一些具体案例和技术,如数据仓库、数据挖掘和分布式数据库等。读者通过学习这些内容,可以了解到数据库在不同领域的应用和发展趋势。 总的来说,《CSDN数据库系统概论王珊电子》是一本系统全面介绍数据库系统概念和原理的电子书,适合计算机科学与技术专业的学生和从业者学习和参考,对于提高数据库知识和技能有一定的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字母符号数字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值