《数据库系统教程》1---6

数据库系统

● 第一章 绪论

一、数据库系统的基本概念

● 1.数据库(DB)
● 长期储存在计算机内,有组织的、可共享的大量数据的集合
● 2.数据库管理系统(DBMS)
● 管理数据库的系统软件
● 3.数据库管理员(DBA)
● 负责全面管理和控制数据库系统正常运行的人员,承担着规划、设计、创建、监控和维护整个数据库的责任
● 4.数据库系统(DBS)
● 定义
● 具有管理和控制数据库功能的计算机系统
● 组成部分(5个)
● 数据库
● 数据库管理系统
● 应用系统
● 数据库管理员和用户
● 系统平台-硬件和软件

二、数据库设计的一般过程(6个)

● 需求分析阶段
● 概念设计阶段
● 逻辑设计阶段
● 物理设计阶段
● 实施阶段
● 运行和维护
● 三、数据库层次(P24)
● 1.三层模式结构
● 组成
● 外模式
● 模式(逻辑模式)
● 内模式(存储模式)
● 2.两级映像
● 外模式/逻辑模式映像
● 模式/内模式映像
● 四、数据库的独立性
● 数据的逻辑独立性
● 数据的物理独立性

第二章 关系模型和关系运算

一、关系模型的基本概念

● 1.关系模型
● 定义
● 用二维表格表示现实生活中实体的集合
● 组成结构
● 数据结构
● 数据操纵
● 数据完整性规则
● 2.二维表中的概念
● a.列–属性
● b.列值–属性值
● c.行–元组
● d.行值–记录
● e.关系中属性的个数–元数
● f.关系中元组的个数–基数
● 3.关键码(4个)
● a.超键(SK)
● b.候选键(CK)
● c.主键(PK)
● d.外键(FK)
● 4.关系的规范性(3点)
● 5.关系的完整性(3点)
● 数据完整性约束
● 参照完整性约束
● 用户自定义完整性

二、关系代数

● 1.五个基本操作
● 并(R∪S)
● 差(R-S)
● 笛卡尔积(R×S)
● 投影(π)
● 查询几列特定信息
● 选择
● 查询几行所有信息
● 2.四个组合操作
● 交(R∩S)
● 连接(从其笛卡尔积中选择属性值满足某一θ操作的元组)
● 自然连接
● 除法
● 3.表达式的优化
● 原则(3点)
● ①尽早执行选择操作
● ②尽早执行投影操作
● ③避免直接做笛卡尔积,可先进行选择投影,缩小范围再考试
● 语法树
● 包含的运算符
● 一元(π,σ)、二元运算符(x、∪、-)
● 分组方法

第三章 关系数据库语言SQL

● 1.SQL概述
● 特点
● sql用户可以是应用程序,也可以是终端用户
● 分为三种类型
● 基本表、视图、导出表
● 组成(6个)
● 数据查询语言(DQL)
● 数据定义语言(DDL)
● 数据操纵语言(DML)
● 数据控制语言(DCL)
● 事务处理语言(TPL)
● 指针控制语言(CCL)
● 常用的命令(4种)
● 数据查询
● SELECT
● 数据定义
● CREATE、DROP、ALTER
● 数据操纵
● INSERT、UPDATE、DELETE
● 数据控制
● GRANT、REOKE
● 2.数据定义
● 主要创建、撤销和修改数据库对象
● (1)sql模式
● 定义
● 一个基本表的集合,相当于为某个用户创建了一个存储空间,存储该用户的数据库对象(基本表、视图、索引)
● 语法格式:
● 创建
● create schema <模式名> authorization 用户名;
● 例:create schema Secret_K authorization KUN;模式名为Secret_K,拥有者为KUN
● 删除
● dorp schema <模式名> [cascade|restrict];
● cascade(级联式)方式:执行该语句时将SQL模式下及其下属的基本表、视图、索引等元素全部撤销删除
● restrict(约束式):只有当SQL模式中没有任何下属元素时,才能撤销SQL模式,否则拒绝执行该语句
● 例:dorp schema Secret_K cascade;删除Secret_K及其下属所有元素
● (2)基本数据类型(4种)
● 数值型
● integer(INT)
● smallint
● real
● double precision
● float(n)
● numeric(p,d) ------number(p,d)
● 定点数,由p位数字(不包括符号,小数点)组成,小数点后面由d位数字组成,也可写成decimal(p,d)或dec(p,d)
● 字符串型
● char(n) 长度为n的定长
● varchar(n) 长度为n的变长
● 位串型
● bit(n)
● 二进制位串
● bit varying(n)
● 变长二进制位串
● 时间型
● date(形为:YYYY-MM-DD)
● time(形为:HH:MM:SS)
● (3)基本表
● 基本语法
● 创建基本表

● 完整性约束有三种
● 主键子句(primary key)
● 外键子句(foreign key)
● FOREIGN KEY(a_id) REFERENCES A(a_id)
● references意思是对应到另一个表->A表中的a_id字段
● 检查子句(check)
● 修改基本表
● 增加
● ALTER TABLE album ADD album_date DATE;
● 删除
● ALTER TABLE album DROP album_length CASCADE;
● 修改
● ALTER TABLE album MODIFY album_name VARCHAR(20);
● 删除数据库中的表
● drop table 表名 cascade
● (4)索引
● create [unique] index <索引名> on <基本表名>(<字段名序列>);
● unique表明创建的是唯一索引
● 例:为学生表学号字段创建唯一索引
● create unique index index_s_sno ON s(SNo)
● drop index <索引名>
● (5)视图
● 3.数据查询
● a.查询(select语句)
● 基本格式:
● select <目标列表达式> //投影
● from <基本表或视图> //连接
● where <查询条件> //选择
● 查询指定列
● select a_id,a_name from A;
● 去掉重复行
● select distinct a_name from A;
● 查询全部列
● select * from A;
● b.条件查询
● 涉及运算符
● 比较运算符
● >、>=、<、<=、=、<>、!=
● 逻辑运算符
● and、or、not
● 其他
● like、between…and、is null
● 例:查询仓库“WH2”且姓张的所有职工的所有基本情况
● select * from 职工 where 仓库号=“WH2” and 姓名 like ‘张%’;
● c.查询经过计算的值
● 常用的聚合函数
● ()内的参数均为某一列名,列名前可加distinct,去掉重复行
● 计数
● count()
● 求和
● sum()
● 例:求仓库WH1每月支付的工资总数
● select sum(工资) from 职工 where 仓库号=“WH1”;
● 求平均数
● avg()
● 求最大最小值
● MAX()、MIN()
● 记录元组(行)的个数
● count()
● 例:求所有员工税后的工资
● 分析:税后工资=工资-税收,并将列名通过as关键字设置为税后工资
● select 员工编号、工资-税收 as 税后工资 from 员工;
● d.对查询结果排序
● 语法格式
● order by <表达式1> [asc|desc],<表达式2> [asc|desc]…
● 其中默认值为asc(升序)
● 例:先按仓库号降序排列,仓库号若相同,则按工资升序,输出全部职工信息
● select * from 职工 order by 仓库号 desc,工资;
● e.对查询结果分组
● 例:求至少有两个职工的每个仓库的总工资
● select 仓库号,COUNT(
),SUM(工资) from 职工 group by 仓库号 HAVING COUNT(*)>2
● having短语总是跟在group by 子句之后,用于限定分组条件,不可单独使用,作用于组
● where子句作用于基本表或视图,从中选择满足条件的元组
● f.联接查询
● 例:找出仓库号为C01的职工号和他们所在的城市
● 分析:不同的列来自不同的表,需要在where后面加上联接条件
● select 职工号,城市 from 职工,仓库 where 职工.仓库号=仓库.仓库号 and 仓库号=‘C01’;
● g.嵌套查询
● 可由连接查询转换而成
● 定义:
● 一个SELECT-FROM-WHERE称为一个查询块
● 将一个查询块嵌套在另一个查询快的where 或having子句条件中的查询
● 例:找出仓库名为“1号仓库”的职工号和职工姓名

● h.EXISTS嵌套查询
● 例:找出仓库名为“1号仓库”的职工号和职工姓名
● 分析:不存在这样一个员工,他的所属仓库名不是“1号仓库”

● i.相关子查询
● 定义
● 在嵌套查询中,内层查询需要依赖于外层查询提供的值
● 例:找出仓库名为“1号仓库”的职工号和职工姓名
● 分析:对于职工表中的记录,根据仓库号,到仓库表中找到仓库名

● j.导出表
● 定义
● 自定义一个select语句的查询结果作为用来查询的表
● 例:按照仓库的员工数从高到低查询仓库编号

● 4.数据操纵
● 数据操纵语言的主要功能在制定表中插入、更新、删除记录
● 操作(3个)
● a.插入记录
● 语法1:单元组的插入
● INSERT INTO <表名>(字段名序列) VALUES(<表达式序列>)

● 语法2:查询结果的插入
● INSERT INTO <表名>(列名序列) <SELECT 查询语句>

● 语法3:表的插入
● INSERT INTO (字段名序列) TABLE

● b.更新记录
● 语法: UPDATE SET <列名>=<表达式1>[,<列名>=<表达式2>,……]|ROW=(<元组>) WHERE <条件表达式>;

● c.删除记录
● 语法: DELETE FROM WHERE <条件表达式>

● 5.视图
● 本身并无数据,所以称为虚表
● 语法格式
● 创建视图
● 语法:create view <视图名>(列名序列) as <select 查询语句> [WITH CHECK OPTION]

● (允许更新的视图需加上[]中的语句,用于检测所更新的数据是否和视图的完整性约束)
● 删除视图
● 语法:DROP VIEW <视图名>

第四章 关系数据库的规范化

● 一、一些名词基本概念
● 0.关系模式
● 1)内容
● 外延
● 通常所说的关系、表或当前值(与时间有关)
● 内涵:与时间是独立的
● 数据的定义
● 关系、属性、域的定义、说明
● 数据完整性约束的定义
● 静态约束
● 数据间的联系(数据依赖)、主键和值域的设计
● 动态约束
● 定义各种操作(增、删、改)对关系值的影响
● 2)问题
● 数据冗余
● 解决方法:
● 分解
● 操作异常
● 修改异常
● 插入异常
● 删除异常
● 1.函数依赖
● 2.平凡函数依赖和非平凡函数依赖
● 3.完全函数依赖和部分函数依赖
● 4.传递函数依赖与直接依赖
● 5.函数依赖的公理系统
● 1)逻辑蕴涵 F╞ X→Y
● 其实质就是X→Y是F的一个子集
● 2)Armstrong公理系统
● 自反性
● 若Y⊆X⊆U,则X→Y在R上成立
● 增广性
● 若X→Y在R上成立,则Z⊆U,则XZ→YZ在R上成立
● 传递律
● 若X→Y和Y→Z在R上成立,则X→Z在R上成立
● 3)公理推论
● 合并性
● 伪传递性
● 分解性
● 复合性
● 通用一致性
● 6.闭包
● 函数依赖集的闭包(F﹢)
● 定义:被函数依赖集F逻辑蕴涵的函数依赖全体构成的集合
● 全函数依赖族(函数依赖完备集)
● F﹢=F
● 属性集的闭包(X﹢={属性A | F╞ X→A})
● 定义
● 设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包表示为X﹢,它是从F集使用FD推理规则推出所有满足X→A的属性A的集合
● 定理
● X→Y能用FD推理规则推出的充分必要条件是Y⊆X﹢
● 7.码(键)的函数依赖表示(设关系模式R的属性集是U,X是U的一个子集)
● 超键
● 如果X→U在R上成立,那么称X是R的一个超键,超键含有多余的属性
● 候选码
● 定义:
● 如果X→U在R上成立,但对于X的任意真子集X1都有X1→U不成立,那么称X是R的一个候选键
● 候选码中包含的属性称为主属性
● 不属于候选码的属性称为非主属性
● 主键
● 关系模式中有多个候选码时,选定其中一个作为主键
● 8.依赖集
● 等价依赖集
● F﹢=G﹢
● 最小依赖集(不唯一)
● ①满足条件
● 不存在右部未拆分的函数依赖
● 不存在多余的函数依赖
● 不存在左部未简化的函数依赖
● ②计算方法
● Step1:将FD集的右部全部拆成单属性
● Step2:再对其消去左部冗余的属性
● Step3:去掉冗余的函数依赖
● 二、关系模式的范式(衡量模式好坏的标准)
● 1.第一范式(1NF)
● 定义
● 关系模式R的每个属性的值都是不可再分的简单数据项(原子值)
● 该范式是对关系模式最起码的要求,不满足的数据库模式不能称为关系数据库
● 2.第二范式(2NF)
● 定义
● 若关系模式R是1NF,而且每一个非主属性都完全函数依赖于R的候选键

● 作用:
● 消除了非主属性对候选键的部分依赖
● 3.第三范式(3NF)
● 定义
● 如果关系模式是1NF,而且他的任意一个非主属性都不传递依赖于任何候选键,则R是3NF

● 作用
● 消除了非主属性对候选键的传递依赖
● 满足第三范式一定满足第二范式

● 4.Boyce-Codd范式(BCNF)
● 定义
● 如果关系模式R是1NF,如果对于R的每个属性都不传递依赖于候选键,则R是BCNF,也就是说R的每个属性都直接依赖于候选键
● 如果数据库模式中的每个关系模式都是BCNF,则称为BCNF的数据库模式
● 有传递依赖的或者不满足3NF一定不满足BCNF,但是满足3NF的也不一定是BCNF

● 5.小结
● ①如果关系模式为BCNF,则必有R为3NF\2NF\1NF
● ②如果R为3NF,且R只有一个候选码,则R必属于BCNF
● ③如果关系模式只有两个属性,则R必属于BCNF
● ④BCNF的所有非主属性都完全依赖于每个候选码
● ⑤BCNF的所有主属性都完全依赖于每个不包含它的候选码
● ⑥BCNF关系模式没有任何属性完全依赖于非码的任何一组属性
● 三、模式分解
● 1.标准
● 是否无损分解
● 是否保持函数依赖的分解
● 2.无损分解
● 定义
● 分解后的模式重新组合,仍旧得到唯一的关系r,不会增加或丢失元组
● 测试方法:
● Chase过程
● 1)建表

● 3)若存在一行全为a,则为无损分解
● 寄生元组
● 由于有损分解,多出来的元组
● 3.保持函数依赖分解

● 4.分解为2NF的算法
● 对于FD W→A,如果存在X⊂W有X→A成立,那么称W→A是局部依赖(A局部依赖于W),否则是完全依赖
● X⊂W,X真包含W
● 实质
● 将非主属性相对于主属性的局部函数依赖提取出来作为一个关系模式
● 5.无损分解为3NF的算法

● 6.无损分解为BCNF的算法

● 7.分解为3NF的算法:既保持函数依赖又保持无损连接

第五章 数据库设计与ER模型

● 一、数据库设计的过程
● 1.一些概念
● 数据库应用系统
● 以数据库为基础的信息系统,具有信息采集、组织、加工、抽取、综合和传播等功能
● 数据库系统生存期
● 概念:
● 把数据库应用系统从开始规划、设计、实现、维护到最后被新的系统取代而停止使用的整个区间
● 阶段:
● 1)规划
● 分为三个步骤
● 系统调查
● 可行性分析
● 确定总目标,对工作流程进行优化和制定项目开发计划
● 2)需求分析
● 四个步骤
● 1)分析用户活动,产生业务流程图
● 2)确定系统范围,产生系统关联图
● 3)分析用户活动涉及数据,产生数据流图(DFD)
● 数据流图:
● 从“数据”和“对数据的加工”两方面表达数据处理系统工作过程的一种图形表示法
● 4)分析系统数据,产生数据字典
● 数据字典
● 定义
● 对数据描述的集中管理
● 功能
● 存储和检索各种数据描述
● 5个部分
● 数据项
● 数据结构
● 数据流
● 数据存储
● 处理过程
● 3)概念设计
● 目标
● 产生反应用户单位信息需求的数据库概念结构,即概念模型
● 重要性
● 将注意力集中在最重要的信息组织结构和处理模型上,有效控制设计的复杂程度,便于组织管理
● 概念模型能充分反映现实世界中实体间的联系,容易向关系模式转换
● 步骤(3步)
● 进行数据抽象(聚集或概括),设计局部概念模型
● 将局部概念模型综合成全局概念模型
● 评审
● 方法
● 实体联系法(ER方法),建立ER模型
● 4)逻辑设计
● 目的
● 将设计好的概念模型转换成与选用的具体机器上DBMS所支持的数据模型相符合的逻辑结构(首先选择DBMS)
● 步骤(5)
● 1)把概念模型转换成逻辑模型
● 将ER模型中的实体类型和联系类型转换成关系模式
● 2)设计外模型
● 是逻辑模型的子集,是应用程序和数据库系统的接口,能允许应用程序有效的访问数据库中的数据,而不破坏数据库的安全性
● 3)设计应用程序与数据库的接口
● 4)评价模型
● 方法
● 定量分析
● 性能测量
● 5)修正模型
● 目的
● 是模型适应信息的不同表示
● 5)物理设计
● 6)实现
● 步骤(4)
● 1)用DDL定义数据库结构
● 2)组织数据入库(数据装载)
● 对小型数据库系统(人工入库)
● ①筛选数据
● ②转换数据格式
● ③输入数据
● ④校验数据
● 对大中型数据库系统(计算机辅助)
● ①筛选数据
● ②输入数据
● ③校验数据
● ④转换数据
● ⑤综合数据
● 3)编制与调试应用程序
● 4)数据库试运行(联合调试)
● 主要工作(2)
● 功能调试
● 性能测试
● 7)运行维护(由DBA完成)
● ①数据库的转储和恢复
● ②数据库安全性、完整性控制
● ③数据库性能的监督、分析和改造
● ④数据库的重组织与重构造
● 二、ER模型
● 五要素
● 1.基本元素(3)

● 实体
● 联系
● 属性
● 能唯一标识实体的属性或实体集——实体标识符(下划线)
● 分类
● a.简单属性和复合属性
● 是否可再分
● b.单值属性与多值数型
● 取值多少(多指数型用双线椭圆表示)
● 多值数型会造成数据库潜在数据异常、数据不一致和完整性的缺陷
● 修正方法

● 将原来的多值属性用几个新的单值属性来表示

● 将原来的多值属性用一个新的实体类型表示,依赖于原实体而存在的新实体称之为弱实体

● c.存储属性和派生属性
● 是否需要存在数据库内,派生属性可从其他属性值推导出值(虚线椭圆表示)

● d.允许为空值的属性
● 2.联系的映射基数(比例)
● 二元联系存在的映射基数

● ①一对一(1:1)
● ②一对多(1:n)
● ③多对多(n:n)
● 同理,在三元中,有1:1:1,1:1:n,1Ⓜ️n,m:n:p
● 三、ER模型到关系模式的转换
● 1.转换规则
● 一个实体类型转换为一个关系模式

● 二元联系
● ①一对一(1:1)

● 在任何一个实体中加入另一个实体的主键和联系的属性
● ②一对多(1:n)

● 将1端实体的主键加入n端实体,作为其外键,再加入联系的属性
● ③多对多(m:n)

● 将联系转变为一个关系模式,其属性为两个实体的主键加上联系类型的属性,其主键为两个实体主键的组合
● 三元联系
● ①一对一(1:1:1)
● 在任何两个实体的主键和联系的属性加入第三个实体当中
● ②一对多(1:1:n)
● 将两个1端实体的主键和联系的属性加入n端实体中
● ③多对多(m:n:p)

● 将联系转变为关系模式,其属性为三端实体的主键加上联系类型的属性,其主键为m和n端实体主键的组合
● 自联系
● 同一实体集的实体间的联系,可按上述二元关系情况处理

● 2.实例演示

第六章 数据库的管理

● 一、事务
● 概念
● 构成单一逻辑工作单元的操作集合
● 要么完整的执行,要么完全不执行
● 事务的ACID性质(ACID)
● ①原子性(Atomicity)
● 事务是一个不可分割的工作单元。要么完整的执行,要么完全不执行。
● 原子性是由DBMS的事务管理子系统实现
● ②一致性(Consistency)
● 数据不会因事务的执行而遭受破坏
● 一致性是由DBMS的完整性子系统执行测试任务
● ③隔离性(Isolation)
● 在多个事务并发执行的时候,系统应保证与这些事务先后单独执行的结构一样
● 隔离性是由DBMS的并发控制子系统实现的
● ④持久性(Durability)
● 一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中
● 持久性是由DBMS的恢复管理子系统实现的
● 事务的提交和事务撤销
● begin transaction标志事务开始执行
● 以commit或rollback结束
● COMMIT表示事务成功完成,并将数据库的更改写入磁盘
● ROLLBACK表示事务执行失败,将所有执行的操作退回
● 对数据库访问的两个基本操作
● 读和写

● 完成操作后,数据可能暂时放在内存中,而非写进磁盘
● 事务的状态变迁

● 二、数据库的恢复(保证了事务的原子性和持久性)
● 1.数据库的可恢复性
● 系统能把数据库从被破坏、不正确的状态恢复到一个正确的状态
● 2.恢复的基本原则
● “冗余”,即数据库重复存储
● 实现方法
● ①转储
● 定期对整个数据库进行拷贝,转储到其他介质中妥善保存
● ②建立日志
● 将事务开始、结束标记,以及事务对数据每一次增删改操作前后的值写到日志文件中去,形成日志库
● ③事务的重做(REDO)和撤销(UNDO)操作
● 当数据库遭到介质损坏时,例如:磁头脱落、磁盘损坏,通过转储数据库和日志文件,对事物进行REDO操作,恢复到故障前的状态
● 当数据库出现不一致错误时,对不可靠的事务实现UNDO操作。
● 3.计算机的存储介质
● 1)易失性存储器(内存、Cache存储器)
● 2)非易失性存储器(磁盘、磁带)
● 3)稳定存储器(目标)
● 数据备份
● 数据银行
● 4.故障的类型
● 事务故障
● 可预期:余额透支
● 解决方式:加入判断和ROLLBACK语句,,当事务执行到ROLLBACK语句时,执行UNDO操作
● 非可预期:数据错误
● 解决方式:执行UNDO处理
● 系统故障:硬件故障
● 解决方式:在系统重新启动时处理
● 对未完成的事务做UNDO处理
● 对已提交但更新还留在缓冲区的事物进行REDO处理
● 介质故障:磁盘上的物理数据库遭到毁灭性破坏

● 三、数据库的并发控制
● 1.并发操作
● 定义
● 在多用户系统中,CPU通过分时操作技术,使许多事务对在同一时间段内对同一数据进行操作
● 问题
● ①丢失更新
● 事务一与事务二从数据库中读取同一数据并修改,事务2的提交结果破坏了事务1的提交结果,导致事务1的修改被丢失

● ②读“脏”数据
● 事务1修改数据并将其写回磁盘,事务2读取该数据后,事务1由于某种原因被撤销,这时事务1已修改的数据恢复原值,事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。

● ③不可重复读
● 事务1需要读取同一数据项A,但在两次读取的间隔中,事务2改变了A的值,因此。T1在两次读取时,A的值发生了变化

● 解决丢失更新方法(封锁技术)
● 封锁对象的大小——封锁的粒度
● 粒度越大,并发度越小,系统的开销越小
● 一般来说
● 处理大量元组的用户事务可以以关系为封锁单元
● 处理少量元组的用户事务,可以以元组为封锁单位
● 排他性封锁(X锁),写锁

● 定义
● 如果事务T对某个数据R实现了X锁,那么在T对R解除封锁之前,不允许其他事务T再对该数据加任何类型的锁
● 操作(2)
● 申请X锁——“XFIND R”
● 成功,可以读写R
● 失败,事务进入等待队列,一直到获准x锁才可继续
● 解除X锁——“XRELEASE R”(一般合并到事物的结束操作中)
● 共享性封锁(S锁),读锁(可能引发死锁)

● 定义
● 事务T对某数据加上S锁后,仍允许其他事务在对该数据加S锁,但在对该数据所有的S锁都解除之前决不允许任何事务对该数据加X锁
● 操作(3)
● 申请S锁——“SFIND R”
● 成功,可以读数据,但不能写
● 失败,事务进入等待队列,一直到获准S锁才可继续
● 升级和写操作——“UPDX R”
● 事务要把对数据R的S锁升级为X锁,若成功,则更新数据R否则事务进入等待队列
● 解除S锁——“SRELEASE R”(可随时解锁)
● 封锁带来的问题
● ①活锁:事务永远处在等待地位,无法封锁
● 解决方法:先来先服务、升级方法
● ②死锁:系统中有两个或两个以上事务处于等待状态,并且每个事务都在等待另一个事务解除封锁,形成一个无法解开的环
● 解决方法:死锁测试程序
● 并发操作的调度
● 事务的调度
● 事物的执行次序
● 串行调度
● 多个事务依次执行
● 并发调度
● 利用分时技术,处理多个事务
● 可串行化的调度
● 一个并发调度的执行结果与某一串行调度的执行结果等价
● 2.并发控制
● 定义
● 对多个并发执行的事务进行协调,保证数据库的完整性,同时避免用户得到不正确的数据
● 四、数据库的完整
● 定义
● 是指数据的正确性、有效性、相容性,防止错误的数据进入数据库
● 正确性 是指存储的数据是所定义的数据类型
● 有效性 是指存储的数据在所定义的范围内
● 相容性 表示相同事实的数据应该相同
● sql中的完整性约束
● 域约束
● 用"CREATE DOMAIN"语句定义新的域,并且还可出现CHECK子句
● 基本表约束(可以在定义前加上CONSTRAINT<约束名>)
● 候选键定义
● UNIQUE<列名序列>或PRIMARY KEY<列名序列>
● UNIQUE方式定义了表的候选键,只表示了只是唯一的,值非空还需在列定义是带有选项NOT NULL
● PRIMARY KEY方式定义了表的主键,一个基本表只能指定一个主键
● 外键的定义

● 参照动作
● 删除参照表的某个元组
● NO ACTION方式
● 对依赖表没有影响
● CASCADE方式
● 将依赖表中所有的外键值与参照表中要删除的主键值相对应的元组一起删除
● RESTRICT方式
● 只有当依赖表中没有一个外键值与要删除的参照表中的主键值相对应时,系统才能执行删除操作
● SET NULL方式
● 删除参照表中的元组时,将依赖表中所有与参照表中被删主键值相对应的外键值均置为空值
● SET DEFAULT方式
● 把外键值均置为预先定义好的默认值
● 修改参照表中主键(与删除差不多)
● NO ACTION方式
● CASCADE方式
● RESTRICT方式
● SET NULL方式
● SET DEFAULT方式
● “检查约束”的定义
● 对单个关系的元组值加以约束
● CHECK<条件表达式>
● 断言

● 五、数据库的安全
● 1…数据库的安全性
● 保护数据库,防止不合法的使用,以免数据的泄密、更改和破坏
● 2.安全性级别(从低到高)
● 环境级
● 职员级
● OS级
● 网络级
● DBS级
● 3.权限
● 访问权限
● 读
● 插入
● 修改
● 删除
● 修改权限
● 索引
● 资源:创建新关系
● 修改
● 撤销
● 4.sql中的安全机制
● 视图
● 无数据的虚表,可以被查询,但对增删改操作有一定的限制
● 权限
● 保证特定用户只能查询或修改特定的数据
● 六类
● select、insert、delete、update、references(定义外键)、usage(使用定义的域)
● 授权语句

● 例:把对S的查询、修改权限授给用户WANG,并且WANG还可以把这些权限转授给其他用户
● GRANT select,update ON S TO wang WITH GRANT OPTION
● 回收语句

● 角色
● 一组具有相同权限的用户
● 为角色授予权限
● GRANT<权限列表> on <数据库对象或元素> to <角色列表>
● 将角色授予给用户
● GRANT<角色> TO <用户列表>
● 撤销用户角色
● REVOKE <角色> FROM <用户列表>
● 将角色授予给角色
● GRANT<角色1> TO <角色2>
● 审计
● 审计用户名/口令的误用、监视指定数据库对象的变化、监视特权账户执行的活动
● 5.常用的安全措施
● 1)强制存取控制
● 2)统计数据库的安全性
● 3)数据加密法
● 4)自然环境的安全性

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值