数据库复习
数据库复习
- 题型:选择题40个共40分,判断题10个共10分,关系代数和SQL设计30分,简答题2个共8分,数据库规范化12分
Chap 1 概述
理解数据、数据库、数据库管理系统、数据库系统
实体之间的联系形式主要有哪几种?
- 一对一
- 一对多
- 多对多
理解概念模型、逻辑模型、物理模型
- 数据模型的组成要素:数据结构(静)、数据操作(动)、完整性约束(静)。
数据模型可以分为两类——概念模型、逻辑模型和物理模型
- 概念模型
- 按用户的观点来对数据和信息建模,用于数据库设计。
- 逻辑模型和物理模型
- 逻辑模型:按计算机系统的观点对数据建模,主要包括:
- 网状模型
- 层次模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
- 物理模型:
- 描述数据在系统内部的表示方式和存取方法,是对数据最底层的抽象。
- 逻辑模型:按计算机系统的观点对数据建模,主要包括:
概念数据模型
- 与应用程序内部逻辑无关,与DBMS无关
- 接近自然语言
逻辑数据模型
- 应用系统设计者或用户看到的在程序一级的数据模型
- 用于DBMS实现,与DBMS有关系
物理数据模型
- 应用系统内部的存储级别上看到的数据模型
- 与DBMS有关,和操作系统及硬件有关。
什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?
- 当数据库的存储结构改变了(例如选用了另一种存储结构),由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了程序与数据的物理独立性,简称数据的物理独立性。
- 当需要改变模式时(例如增加新的关系、新的属性、改变属性的数据类型、改变数据间的联系等),由数据库管理员对各个外模式/模式的映象作相应改变,而使外模式保持不变,从而不必修改或重写应用程序改。而应用程序是依据数据的外模式编写的,保证了数据与程序的逻辑独立性。简称数据的逻辑独立性。
- 特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有时可以共用同一个外模式。数据库的二级映象保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
数据库管理系统的主要管理功能?
- 数据定义功能
- 提供数据定义语言(DDL)
- 定义数据库中的数据对象、数据组织、存储和管理
- 数据组织、存储和管理
- 分类组织、存储和管理各种数据
- 确定组织数据的文件结构和存取方式
- 实现数据之间的联系
- 提供多种存取方法提高存取效率
- 数据操纵功能
- 提供数据操纵语言(DML)
- 实现对数据库的基本操作 (查询、插入、删除和修 改)
- 数据库的事务管理和运行管理
- 数据库在建立、运行和维护时由DBMS统一管理和控制
- 保证数据的安全性、完整性、多用户对数据的并发使
- 发生故障后的系统恢复
- 数据库的建立和维护功能(实用程序)
- 数据库初始数据装载转换
- 数据库转储
- 介质故障恢复
- 数据库的重组织
- 性能监视分析等
- 其它功能
- DBMS与网络中其它软件系统的通信
- 两个DBMS系统的数据转换
- 异构数据库之间的互访和互操作
Chap 2 关系代数
- 熟练掌握关系代数基本运算
- 关系表有多个候选键,但只能选定其中一个做为主键
- 投影和选择运算要重点掌握,投影后,元组数量可能变化也可能不发生变化,选择后,属性数量不发生变化
- 理解自然连接、外连接(左、右、全外连接)
- 理解主键、外键的概念及关系
Chap 3 SQL
重点掌握
要掌握单表查询、多表连接查询、嵌套查询、分组运算、排序、选择、投影等操作
select [ all | distinct ] col1,col2,...,coln
from tab1,tab2,...,tabn or view1, view2,..., viewn
where ....
group by coli,...
having ...
order by <coli>[asc or desc]
视图的作用?如何定义视图?
-
视图定义只在数据字典中存定义,不存数据并且不会执行基表的查询
-
create view <viewName> as <子查询> [with check option]
-
子查询不能order by
-
作用:
- 简化用户操作
- 使用户能以多种角度看待同一数据
- 视图对重构数据库提供了一定程度的逻辑独立性
- 安全保护
- 更加清晰的表达查询
如何去掉查询结果的重复元组(记录)
- 用 DISTINCT 关键字
HAVING 和 where语句的用途,HAVING作用于分组,对分组进行限制输出,Where作用于整个表,用来选择满足条件的行
- having: 分组后操作
- where: 分组前操作
ALTER TABLE用来修改表的结构(数据库模式)
-
alter table <table_name> ???
判断空值用“IS NULL”
- is null
- is not null
- null != null
单列排序、多列排序
-
order by <列名i> [asc | desc]
-
默认 asc
-
多列排序:从左到右,左边相同右边才按order by指定顺序排序。
-
给定几个关系表,能用关系代数、SQL实现不同的查询
- 外连接:left (outer) join on...
- union:并集
- union all: 合并时不去重
- except: 差集
- intersect: 交集
Like查询中“%”与“-”的应用
-
[not] like '<...>' [escape'<转换字符>']
-
注意匹配符要被单引号围住
-
'_' : 匹配1个字符
-
'%': 匹配0个或多个字符。
-
ex: 查出以'test_'开头的名字,且倒数第三个字母为i
-
select name from testTable where name like 'test\_%i__' escape'\'
-
where something [not] like ....
-
创建索引的语句
-
create [ unique ] [ cluster ] index <index_name> on <table_name> (<col_name> [次序] ,... );
-
unique: 每个索引值只对应一条数据记录
-
cluster: 键值相同的记录物理上集中存放,少CRUD
-
次序: ASC(default), DESC
Chap 4 数据库安全性
掌握几类数据库安全性控制的常用方法
- DAC 自主存取控制
- C2级
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户还可以将其拥有的存取权限转授给其他用户
- with grant option
- MAC 强制存取控制方法
- 实现MAC时首先要实现DAC
- 规则
- 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
- 仅当主题的许可证级别等于客体的密级时,该主体才能写相应的客体。
- 规则的共同点
- 禁止了拥有高许可证级别的主体更新低密级的数据对象
如何用sql语句定义授权和收回授权
-
grant <特权> on <table_name> to <somebody>.... [with grant option] grant <权限>,... to [user|role]...'
-
revoke <特权> on <table_name> from <somebody>,... revoke <特权> from <somebody>,...
-
特权: all privileges | 操作
-
with grant option
- 不可以循环
Chap 5 数据库完整性
掌握几类数据库完整性
- 实体完整性
- 一个基本关系的主码值应该是唯一的,所有主码属性都不能取空值。
- 参照完整性
- 规则:
- 取空值
- 等于被参照关系中某个元组的主码值
- 规则:
- 用户定义完整性
- 反映某一具体应用所涉及的数据必须满足的语义要求。
- 实体完整性、参照完整性:关系模型必须满足的完整性约束条件,关系的两个不变性。
如何用sql语句定义数据库完整性
-
实体完整性
-
create table student (Sno char(9) primary key, ...); //表级 create table student ( Sno char(9), ...., primary key(Sno) )
-
-
参照完整性
-
create table sc ( sno char(9) not null, foreign key(sno) references student(Sno) on delete cascade on update cascade )
-
-
用户定义完整性
- 属性上 not null, unique, check(...)
- 元组:check(...)
Chap 6 关系数据理论
掌握第一范式、第二范式和第三范式、BC范式定义及判断
第一范式
第二范式
第三范式
BC范式
给定一个不规范的应用,画出E-R图,能标注表的函数依赖关系,能判断属于第几范式,如果不规范能将表规范到第三范式。
Chap 7 数据库设计
数据库的设计过程有哪些?每个阶段主要任务是什么?
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 数据库物理设计
- 数据库实施
- 数据库运行和维护阶段
理解E-R图图示的表示方法
能画出简单应用的E-R图
局部E-R图合并成全局E-R图时可能出现的合并冲突有哪几种。
实体和联系转化为表的方式
Chap 8、 不考
Chap 9 查询优化
数据库查询处理的主要步骤及内容。
- 查询分析
- 词法分析
- 语法分析
- 查询检查
- 语义分析
- 符号名转换
- 安全性检查
- 完整性初步检查
- 查询优化
- 选择一个高效执行的查询处理策略
- 代数优化
- 物理优化
- 查询执行
- 代码生成器生成执行查询计划的代码
代数优化的一般原则
什么是物理优化?
- 物理优化就是要选择高效合理的操作算法或存取路径,求得优化的查询计划
哪些情况对属性建立索引比较合适?哪些情况不适合建立索引?
哪些情况下适合建索引
1. 频繁作为where条件语句查询的字段
2. 关联字段需要建立索引,例如外键字段,student表中的classid, classes表中的schoolid 等
3. 排序字段可以建立索引
4. 分组字段可以建立索引,因为分组的前提是排序
5. 统计字段可以建立索引,例如count(),max()
哪些情况下不适合建索引
1.频繁更新的字段不适合建立索引
2.where条件中用不到的字段不适合建立索引
3.表数据可以确定比较少的不需要建索引
4.数据重复且发布比较均匀的的字段不适合建索引(唯一性太差的字段不适合建立索引),例如性别,真假值
5. 参与列计算的列不适合建索引
笛卡尔运算切记不要滥用,有可能使查询很长时间
Chap 10 数据库恢复
掌握事务的概念及事务的四个特性
- 概念
- 一个数据库操作序列
- 一个不可分割的工作单位
- 特性 ACID
- 原子性 atomicity
- 一致性 consistency
- 隔离性 isolation
- 持续性 durability
什么是事务故障、系统故障和介质故障?产生原因,如果进行故障恢复?
事务故障
- 逻辑错误
- 系统错误
- 恢复:UNDO(撤销事务)
- 故障恢复:
系统故障(软故障)
- 发生故障时,事务未提交: UNDO所有未完成事务
- 发生故障时,事务已提交,但缓冲区的信息尚未完全写回到磁盘上:REDO所有已提交的事务
- 故障恢复:
介质故障(硬故障)
- 装入数据库发生介质故障前某个时刻的数据副本
- 重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库
- 故障恢复:
重点掌握具有检查点的恢复技术及恢复步骤
常见的数据库保护措施有安全性保护,完整性保护,并发控制及其故障恢复
事务的定义、提交和回滚操作
Chap 11 数据库并发控制
数据库并发操作可能带来的数据不一致的几种形式
- 丢失修改
- 不可重复读
- 读脏数据
封锁机制是数据库并发控制的主要方式
锁的主要类型及相容矩阵
- 排他锁(写锁)X锁
- 共享锁(读锁) S锁