数据库根据提纲复习

何其有幸在老师删除摸底考试卷子之前做了一次,得出的结论就是考点全在前面的章节!希望明天的摸底还有之后的正式期末都是这样,因为后面压根没认真学!
第一章 数据库数据库系统概述
1.现实世界中事物的特性在信息世界中称为:
A.实体
B.实体标识符
C.属性
D.主码
答:C
数据:描述事物和概念的符号记录
信息:数据在人们头脑中的反映
实体:客观存在且可相互区分的事物
实体标识符:表示某个实体的符号(可能是一个属性,也可能是多个属性)
主码:用于唯一表示表中某一行记录
数据管理:对数据分类,组织,编码,存储,检索和维护
其分为三个阶段(人工管理阶段,文件系统阶段,数据库系统阶段)

2.文件系统阶段,数据是
A.无结构的
B.部分有结构
C.整体无结构
D.记录内部有结构,整体无结构
答:D

特点 人工管理阶段 文件系统阶段 数据库系统阶段
数据库管理者 用户 文件系统 DBMS
面向对象 某一应用程序 某一应用程序 现实世界
共享程度 无共享,冗余大 共享性小,冗余大 共享性大,冗余小
独立性 无独立性 独立性小 有物理、逻辑独立性
结构化程度 无结构性 记录内部有结构,整体无结构 整体结构化,数据模型描述

eg:数据库系统的逻辑数据独立性是指:模式改变,外模式和应用程序不变
数据库系统的物理数据独立性是指:内模式改变,不影响外模式和应用程序,只用改变内模式和模式之间的映射
数据库:长期储存在计算机内,有组织共享数据集合
数据库管理系统功能(DBMS)
1.数据定义
2.数据操纵
3.数据库运行管理
4.数据库建立维护
DBMS的数据控制功能(包含靠后章节的知识)
数据安全性
数据完整性
并发控制
数据恢复
数据库系统(DBS)
包含数据库的软件系统
数据库管理员职责(DBA)
模式定义
数据存储结构和存取策略定义
模式和存储结构修改
数据访问授权
数据库重组与重构
日常维护

数据模型的分类
分为概念模型(信息模型)数据模型
数据模型包括:网状模型、层次模型、关系模型
eg:数据库系统的概念模型独立于:
A、具体的机器和DBMS
B、信息世界
C、现实世界
D、E-R图
答案:A
eg:层次模型必须满足的一个条件是
A、每个结点均可以有一个以上的父结点
B、有且仅有一个结点,无父结点
C、不能有结点,无父结点
D、可以有一个以上的结点,无父结点
答案:B
层次模型条件:

(1)有且只有一个结点没有双亲结点,这个结点称为根结点;
(2)根以外的其他结点有且只有一个双亲结点 。

eg:采用二维表结构表达实体类型及实体间联系的数据模型是:关系模型

第二章 关系数据库
关系特性
列是同质的
列是不可再分的
不能有相同的行
行是无序的
列是无序的
关系列别
基本表
查询表
视图表
关系的完整性约束
实体完整性:主码取值非空且唯一
参照完整性:外码取指要么为空,要么为其作为主码时已有的值
用户定义的完整性:用户根据实际需求定义的属性值必须满足的语义要求
关系代数运算
eg:关系代数中基本运算是:并/差/笛卡儿积/选择/投影
非基本运算:交/连接/除
eg:两个子查询可以执行并、交、差操作的条件是两个子查询结果:结构完全一致
第三章 SQL语言
eg:SQL属于( )数据库语言:关系型
1.创建基本表

create table s(sno varchar(11)primary key,sname varchar(20)not null,sex char(1),sbirth date,school varchar(20));

2.删除基本表

drop table	   s;      

3.修改基本表

//向s表加属性
alter table s add class varchar(10);
//删除列
alter table s drop column class;
//修改属性类型
alter table s alter column sex int

4.创建索引

create index s_ind1 on s(sno DESC);

5.删除索引

drop index s.s_ind2;

6.查询(略过)
比较重要的是嵌套查询的时候注意in和=的不同
双exists查所有

//查询选修了所有课的同学姓名
select sname
from s
where not existsselect *
		  from c
		  where not existsselect *
		  		    from sc
		  		    where sc.sno=s.sno and sc.cno=c.cno));
               

eg:SELECT语句执行的结果是:表
7.视图
虚表
从一个或几个基本表(或视图)导出的虚表
只存视图定义,不出现数据冗余
基表的数据发生变化,视图中查询的数据也随之变化
更新受限
创建视图

create view s_v1
as select sno,sname,school
from s
where sex='女';

8.插入信息

insert into sc(sno,cno)
values('170100506','c01');

9删除

delete from c
where not existsselect *
		  from sc
		  where c.cno=sc.cno);

eg:删除一个属性的值(分量)用:update
10.修改

update s set school='电气学院'
where sname='李梅';

第四章 关系规范化理论
非平凡的函数依赖
X->Y,Y不属于X,则称X->Y为…
平凡的函数依赖
X->Y,Y属于X,则称X->Y为…
完全依赖
部分依赖
传递依赖
1NF:关系R的属性都是原子属性,则R属于1NF
2NF:R属于1NF,非主属性完全依赖于主码(不部分依赖),则R属于2NF
3NF:R属于2NF,非主属性都不传递依赖于主码,则R属于3NF
BCNF:R属于3NF,且所有主属性都不部分依赖于不包含它的主码(完全依赖),则R属于BCNF(将主属性放到和其等价的属性做主码的关系中)
BCNF特点(考这个完蛋):
1.所有非主属性都完全函数依赖于每个候选码
2.所有主属性都完全函数依赖于每个不包含它的候选码
3.没有任何属性完全函数依赖于非码的任何一组属性
规范化和求候选码略过

第五章 数据库设计
数据库设计方法:
手工试凑法
规范设计法
计算机辅助工具法
基于3NF的泛关系设计方法

数据库设计步骤
1.需求描述和分析
2.概念设计:用ER模型设计DB概念模型
3.逻辑设计:用关系规范化理论设计数据库的逻辑结构
4.物理设计:定义数据模式,确定db的存储结构和存取方式(索引设计,聚簇设计)
5.实施:建立db,装入data,测试
6.运行与维护:备份与恢复、db重组,重构
eg:下列模型中用于数据库概念设计阶段的是():ER模型
eg:数据库设计过程中,索引设计属于()的任务:物理设计

eg:数据库系统的生命周期分为哪几个阶段?每个阶段的主要任务是什么
数据库的生命周期分为三个阶段。分别为软件定义时期、软件开发时期和软件运行与维护时期。在软件定义时期的任务有问题定义和可行性研究;在软件开发时期的任务有需求分析、总体设计、详细设计、编码和测试;在软件运行与维护时期的任务有软件运行与维护;

eg:试述数据库概念结构设计的重要性和设计步骤。
数据库概念结构设计是将用户的需求抽象成信息的阶段,重要性体现在如果没有数据库概念结构设计阶段,就无法满足用户的需求。它的设计步骤是先进行数据抽象,设计局部概念模式;将局部概念模式综合成全局概念模式;对全局E-R模式进行优化,提交评审;

试述数据库逻辑结构设计任务和步骤。
数据库逻辑结构设计的任务是将概念结构设计阶段设计的ER图,转换成与选用DBMS所支持的数据模型相符合的逻辑结构;
其步骤是:1.概念模式到关系数据库模式的转换;
2.关系模式的优化

什么是数据库的重组织和重构造?为什么要进行数据库的重组织和重构造?
数据库的重组织就是对数据库的相关信息进行重新组织,以便提高数据库效率;数据库的重构造就是对数据库模式的简单变更,在保持原有的行为语义和信息语义的情况下改进数据库设计;
要对数据库进行重组织是因为数据库使用较长一段时间后由于增,删,改等操作,使数据库的数据混乱,效率降低;
要对数据库进行重构造是因为数据库运行一段时间后物理结构和逻辑结构发生变化也会影响数据库效率。

什么是数据库的物理设计?设计的主要内容是什么?
数据库的物理设计就是为数据库选择合适的存储结构和存储路径;设计的主要内容包括索引设计,聚簇设计;

第六章 事务处理技术
事务:数据库操作序列,是数据库应用程序的基本逻辑单元。这些操作要么都做,要么都不做,是一个不可分割的执行单位。
eg:在下列SQL语句中,用于事务操作的语句是( ):ROLLBACK
eg:事务的两个结束状态是( )和( ):提交和回滚
事务的特性
原子性:事务执行时不可分割,即事务所包含的活动要么都做,要么都不做
一致性:事务对数据库的作用应使数据库从一个一致状态到另一个一致状态
隔离性:多事务并发执行,不能相互干扰
持久性:一旦事务提交,不论执行何种操作或发生何种故障,都不应对该事务的执行结果有任何影响
故障
1.事务内部的故障:
1)可预期故障(可通过事务本身发现并处理)

转账余额小于转账金额

2)非预期的故障(不能由应用程序处理)

运算溢出,被零除,不满足完整性约束

2.系统故障:软故障

造成系统停止的任何事件:cpu故障、操作系统故障、程序代码错误、断电…,系统需重启

影响所有正运行事务,但不破坏数据库。可引起缓冲区内容丢失,使所有正运行事务不能到达预期终点。
3.介质故障:硬故障

磁盘损坏,磁头碰撞,强磁场干扰

发生概率很小,但破坏性极大,将破坏部分甚至整个数据库,并影响正在使用相应数据的所有事务
4.计算机病毒

人为因素,极易传播

破坏性很大不仅对db,甚至危害整个计算机系统
eg:数据库系统有哪些故障?哪些故障破坏了数据库?哪些故障尚未破坏数据库,但使其中某些数据变得不正确?

数据库系统有事务故障、系统故障、介质故障和计算机病毒。其中介质故障和计算机病毒破坏数据库;事务故障、系统故障不破坏数据库但使其中数据变得不正确;

恢复
恢复的基本原理----冗余
转储:将整个数据库复制到另一个磁盘上保存起来的过程
恢复:数据库被破坏后,将副本重新装入,并重新运行转储以后的所有更新事务

转储
1.静态转储:转储期间不允许对数据库操作
特点:得到一致性的副本。等用户事务全部结束进行,新事务必须等转储完毕才能执行(数据库可用性被降低)
2.动态转储:转储期间允许对数据库操作
特点:转储和事务并发执行。(不能保证副本中的数据正确有效)
转储方式:
海量转储:每次转储全部数据库(once a week)
增量转储:只转储上次转储后更新的数据(once a day)
需要建立日志文件记录

日志文件
以记录为单位
①事务的标识(标明是哪个事务);
②操作类型(插入、删除或修改);
③操作的对象(记录内部标识);
④更新前数据的旧值(对插入而言,此值为空);
⑤更新后数据的新值(对于删除而言,此值为空)。
以数据块为单位
事务的标识和被更新的数据块,如有数据更新,整个数据块更新前内容和更新后内容放入日志文件
作用:

静态转储:数据库毁坏后,重装副本,根据日志文件,重做已完成的事务,并撤消未完成的事务。
动态转储:用副本和日志文件综合起来恢复数据库

为什么要先写日志文件

写数据库和写日志文件是两个不同的操作,两个操作之间可能发生故障。如先写数据库修改,日志文件没有登记下修改,则以无法恢复。如先写日志,没有修改数据库,按日志文件恢复多执行一次不必要的UNDO操作,不会影响数据库的正确性

恢复策略
利用日志文件进行恢复
基本策略:
对于尚未提交的事务,执行撤消处理(UNDO)
对于已经提交的事务,执行重做处理(REDO)
基本方法:
扫描日志文件,确定所有已开始但尚未提交的事务(对它们需UNDO),再确定所有已提交的事务 (对它们需REDO)
eg:对于在最后一个检测点建立时刻正在运行的事务,应该执行的操作是( ):可能做REDO可能做UNDO

事务故障的恢复
恢复方法
利用日志文件撤消(UNDO)此事务已对数据库进行的修改,遇到事务的开始标志后恢复结束。
事务故障恢复由系统自动完成,对用户是透明的,不需要用户干预

系统故障的恢复
恢复方法

  1. Undo 故障发生时未完成的事务(反向扫描日志文件)
  2. Redo 已完成的事务(正向扫描日志文件)
    系统故障恢复由系统重新启动时自动完成,不需用户干预

介质故障的恢复
磁盘上数据文件和日志文件均被破坏,需重装数据库和日志文件,重做自转储以来已完成的事务。

  1. 装入最新的后备数据库副本(若动态转储,还应装入转储期间的日志文件,将数据库恢复到一致性状态。) 。
  2. 装入有关的日志文件副本(转储结束后的日志文件副本) ,重做已完成的事务。
    (不需要UNDO)

并发控制
多用户并发存取数据库时会产生多事务同时存取同一数据情形。若不控制,可能会存取不正确的数据,造成数据库的不一致性。
并发操作带来的数据不一致性包括:
丢失更新、不可重现、读脏数据
并发控制的技术是封锁
排它锁(简称X锁,又称互斥锁)
事务T对数据对象R加上X锁,则只允许T读、写R,禁止其它事务对R加任何锁。
共享锁(简称S锁)
事务T对数据对象R加上S锁,则T可以读R,但不可以写R,
且其它事务可以对R加S锁、但禁止加X锁。
1级封锁协议:

T在修改数据R前须先加X锁,直到事务结束才释放。
作用:防止丢失更新
保证事务可恢复

2级封锁协议:

1级封锁协议 + T在读数据R前须加S锁,读完即释放。
作用:防止丢失更新
保证事务可恢复
防止读“脏”数据

3级封锁协议:

1级封锁协议 +事务T读数据R前须加S锁,事务结束释放。
作用:防止丢失更新
保证事务可恢复
防止读“脏”数据
保证可重复读

活锁:数据不断处于上锁、开锁交替状态,某事务请求上锁,但始终没有得到机会而永久等待的情形。
死锁:事务得到部分资源,又等待其他事务释放资源而出现的相互等待现象。
eg:在数据库系统中死锁属于( ):事务故障

预防死锁:
一次封锁法
顺序封锁法
诊断死锁并解除:
超时法
等待图法

并发调动可串行化
多事务并发执行正确,当且仅当其结果与按某次串行执行结果相同。称这种调度为可串行化的调度。

两段锁协议:
(1)在对任何数据进行读、写操作前,要申请并获得该数据的封锁(读时S锁,写时X锁);
(2)在释放一个封锁后,不再申请和获得新封锁。
第一阶段只上锁
第二阶段只解锁
eg:
Lock A Lock B Lock C Unlock B Unlock A Unlock C
Lock A Lock B Unlock B Lock C Unlock A Unlock C ×

第七章 数据库安全性与完整性
数据库的安全性:
保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。即:未经授权人不能访问、改变和破坏数据,也就是数据库的存取控制。

授权

//GRANT 权限 ON 对象名  TO 用户 WITH GRANT OPTION
GRANT SELECT ON SC  TO PUBLIC WITH GRANT OPTION ;
GRANT UPDATE(Sno), SELECT ON S TO U4;
//创建视图再授权
eg:create view cv1(cno,cname,credit,pcname)
as select c1.cno,c1.cname,c1.credit,c2.cname
from c c1 ,c c2
where c1.pcno =c2.cno
with check  option;
grant selectinsert on cv1 to u1
with grant option;

eg:Create view  s_v 
as  select * 
from  s
where school=‘c’;
Grant select on s_v to u1;

回收

//REVOKE  权限 ON 对象名 FROM 用户;
REVOKE UPDATE(Sno) ON S FROM U4;
REVOKE SELECT ON S FROM U1 CASCADE//同时收回直、间接从U1获得的权限

审计
把用户对数据库的所有操作自动记录放入审计日志,DBA可以利用审计跟踪的信息,找出非法存取数据的人、时间和内容。这可用于事后追查突破存取控制的情况。审计开销大,用于安全级别较高情况,可以根据实际需求打开或者关闭审计

//AUDIT语句:设置审计功能 
//NOAUDIT语句:取消审计功能 
//对S表的每次成功的查询、增、删、改操作进行审计
      AUDIT  SELECTINSERTDELETEUPDATE 
      ON  S   WHENEVER  SUCCESSFUL;
//取消对S表的ALTER,UPDATE审计
      NOAUDIT  ALTERUPDATE  ON S ;

实体完整性:

CREATE TABLE Student
           (Sno  CHAR(11) PRIMARY KEY//列级约束条件
                 Sname  CHAR(20) NOT NULL,     
                 Ssex  CHAR(2) ,
                 Sbirth  date,
                 Sschool  CHAR(20));

CREATE TABLE Student
        (Sno  CHAR(11),  
         Sname  CHAR(20) NOT NULL,
         Ssex  CHAR(2) ,
         Sage  SMALLINT,
         Sdept  CHAR(20)
         PRIMARY KEY (Sno) ); //表级约束条件

参照完整性:
CREATE TABLE用FOREIGN KEY定义外码
用REFERENCES指明外码参照哪些表的主码

CREATE TABLE SC
         ( Sno  CHAR(11) FOREIGN KEY REFERENCES Student(Sno),
           Cno     CHAR(4) FOREIGN KEY  REFERENCES Course(Cno),  
           score    SMALLINT
          PRIMARY KEY (Sno, Cno));

用户定义的完整性:
CREATE TABLE时定义(列值非空NOT NULL,列值唯一UNIQUE,列值是否满足布尔表达式CHECK(条件))

猜你喜欢

转载自blog.csdn.net/qq_44229840/article/details/106481692