数据库复习

数据库复习

  • 题型:选择题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锁

重点掌握三级封锁协议

什么是两段锁协议2PL

满足两段锁协议是数据库并发调度可串行化的充分条件。

posted @ 2020-08-19 23:52  xxxuanei  阅读(449)  评论(0编辑  收藏  举报