0
点赞
收藏
分享

微信扫一扫

数据库复习(二)

zmhc 2022-01-20 阅读 67
数据库

数据依赖:函数依赖、多值依赖

模式中不好的性质:数据冗余、更新异常、插入异常、删除异常

候选码是特殊的超码。候选码的超集一定是超码,候选码的真子集一定不是超码。

范式:

        1NF:满足最低要求(是模式)的叫第一范式。

        2NF:满足第一范式,且每一个非主属性完全函数依赖于任何一个候选码。

        3NF:满足第二范式,且每一个非主属性不传递依赖与码。

        BCNF:满足第二范式,且没有任何属性完全函数依赖于非码的任何一组属性。

数据库设计的基本步骤:

        需求分析:数字字典、全系统中数据项、数据结构、数据流、数据存储的描述

        概念结构设计:概念模型(E-R图)、数据字典

        逻辑结构设计:数据模型(关系表)

        物理结构设计:存储安排、存取方法选择、存取路径建立

        数据库实施:创建数据库模式、装入数据、数据库试运行

        数据库运行和维护:性能监测、转储/恢复、数据库重组和重构

实体之间的联系:一对一联系、一对多联系、多对多联系

E-R图:E-R图提供了表示实体型、属性和联系的方法。

        实体型用矩形表示,属性用椭圆形表示、联系同菱形表示。

实体与属性的划分准则:

        作为属性,不能再具有需要描述的性质。

        属性不能与其它实体具有联系。

E-R的冲突:属性冲突、命名冲突、结构冲突

过程化SQL:

过程化SQL块的基本结构:
DECLARE
    定义部分
BEGIN
    SQL语句、过程化SQL的流程控制语句
EXCEPTION
    异常处理部分
END;



变量定义:
变量名 数据类型 [[NOT NULL] := 初值表达式] 或
变量名 数据类型 [[NOT NULL] 初值表达式]

常量定义:
常量名 数据类型 CONSTANT := 常量表达式

赋值语句:
变量名 := 表达式



条件控制语句:
IF语句:
IF 条件 THEN
    SQL过程块
END IF;

IF-THEN语句:
IF 条件 THEN
    SQL过程块1
ELSE
    SQL过程块2
END IF;

嵌套的IF语句:
IF ...
THEN ...
ELSE IF ...
     THEN ...
     ELSE IF ...
        THEN ...
...



循环控制语句:
LOOP循环:
LOOP
    循环体
END LOOP;

WHILE-LOOP循环:
WHILE 条件 LOOP
    循环体
END LOOP

FOR-LOOP循环:
FOR 元素 IN 下界..上界 LOOP
    循环体
END LOOP

存储过程:

创建存储过程:
CREATE OR REPLACE PROCEDURE 过程名(参数1, 参数2, ...)
AS
    过程化SQL块

执行存储过程:
CALL/PERFORM PROCEDURE 过程名(参数1, 参数2, ...);

修改存储过程:
ALTER PROCEDURE 过程名 RENAME TO 新过程名;
ALTER PROCEDURE 过程名 COMPILE;        --重新编译

删除存储过程:
DROP PROCEDURE 过程名();

关系数据库管理系统查询处理阶段:查询分析、查询检查、查询优化、查询执行

事务:用户定义的一个数据库操作序列,是一个不可分割的工作单位。

事务语句:

        BEGIN TRANSACTION             开始

        COMMIT                                     提交

        ROLLBACK                                回滚

事务的ACID特性:原子性、一致性、隔离性、持续性

ACID可能遭到破坏的因素:

        多个事务并行运行时,不同事务的操作交叉执行

        事务在运行过程中被强行停止

故障的种类:事务内部的故障、系统故障、介质故障、计算机病毒

转储:

        静态转储:系统中无运行事务时进行。

        动态转储:转储期间可以对数据库进行存取和修改。

        海量转储:转储全部数据库

        增量转储:转储上次转储后更新的数据

数据库恢复:

        检测点之前提交的事务不进行操作

        检测点之后、系统故障之前提交的事务重做

        系统故障之前未提交的事务回滚

三类数据不一致性:丢失修改、不可重复读、读”脏“数据

基本封锁类型:

        排他锁(写锁):X锁,不允许存在其它锁

        共享锁(读锁):S锁,只允许存在其它共享锁

封锁协议:

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

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

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

死锁的预防:

        一次封锁法:每个事务必须一次将所有要使用的数据全部加锁。

        顺序封锁法:预先规定封锁顺序。

死锁的诊断:

        超时法:设置时限判断是否死锁。

        等待图法:判断事务等待图是否有回路,即循环等待。

死锁的解除:

        选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有锁,使其他事务得以继续运行下去。

可串行化调度:调度结果与按某一次序串行执行这些事务时的结果相同。

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

判断是否可串行化:交换调度中不冲突的操作,能够得到串行调度的即为可串行化调度。

两段锁协议:第一阶段只能获得封锁,也称扩展阶段。第二阶段只能释放封锁,也称收缩阶段。

举报

相关推荐

0 条评论