1. 等值连接和自然连接的异同
- 自然连接一定是等值连接,等值连接不一定是自然连接
- 等值连接要求相等的分量不一定是公共属性,自然连接要求相等的分量一定是公共属性
- 等值连接不把重复的属性除去,自然连接要把重复的属性除去
2. 模式和实例的区别
- 模式:数据库的总体设计
- 实例:数据库的数据的一个快照
3. 数据抽象的三个层次
-
物理层:最低层次的抽象,描述数据实际上是怎样存储的
-
逻辑层:比物理层稍高的抽象,描述数据库中存储什么数据以及数据间的关系
-
视图层:最高层次抽象,只描述数据库的某个部分
注:抽象的目的:保持独立性
4. 数据模型分类
- 关系模型
- 实体 - 联系模型
- 基于对象的数据模型
- 半结构化数据模型
5. 数据库语言
- DDL:数据定义语言
- DML:数据操作语言
- 过程化DML:关系代数
- 声明式DML(非过程化DML):SQL
- DQL:数据查询语言
- DCL:数据控制语言
6. 数据库设计的四个阶段
- 需求分析:生成需求分析文档
- 概念设计:使用E-R图或者规范化(范式)
- 逻辑设计:将概念模型映射到使用的数据库系统的实现数据模型上
- 物理设计:指明数据库的物理特征,包括文件组织形式和索引结构的选择
7. DBA的作用
- 模式定义
- 存储结构及存取方法定义
- 模式及物理组织机构的修改
- 数据访问授权
- 日常维护
8. 超码、候选码、主码、外码
- 超码:一个或多个属性的集合,可以在一个关系中唯一地标识一个元组
- 候选码:最小的超码
- 主码:被设计者选中的候选码中的一个
- 外码:一个属性集合,对于参照关系的每个元组来说,它在外码属性上的取值肯定等于被参照关系中某个元组在主码上的取值
9. where和having的异同
- 使用地方不同:where可以用于update、select、delete、insert;having只能用于select
- 执行顺序不同:where和having同时使用时,where先执行,having后执行
- 子句不同:where子句中的表达式都可以在having子句中出现,having子句中的一些表达式不能在where子句中出现,如where子句不可以是聚集函数
10. SQL执行顺序
(8)SELECT (9)DISTINCT (11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2) ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
注:序号表示执行顺序
11. 完整性约束
- not null
- unique
- check
- 默认约束(default)
- 实体完整性(主键约束)
- 参照完整性
12. 关系代数的基本运算
- 选择运算
- 投影运算
- 并运算
- 集合差运算
- 笛卡尔积运算
- 更名运算
13. 二元联系
- 一对一
- 一对多
- 多对一
- 多对多
14. 弱实体集和强实体集
-
强实体集:有主码的实体集
-
弱实体集:没有足够的属性以形成主码的实体集
注:一个弱实体集一定依赖于一个强实体集
15. 概化和特化
- 特化:自顶向下,实体集内部进行分组
- 概化:自底向上,两个实体集之间的共同属性
16. 数据库设计的目标
-
BCNF
-
无损
-
保持依赖
注:1. 通常在BCNF和保持依赖的3NF中做出选择
2. 无损和保持依赖是判断分解后的关系模式是否合理的两个重要标志
17. BCNF和3NF
- BCNF:对于
F
+
F^+
F+ 中所有形如
α
\alpha
α
→
\rightarrow
→
β
\beta
β 的函数依赖,一下至少一项成立
- α \alpha α → \rightarrow → β \beta β 是平凡的函数依赖
- α \alpha α 是模式R的一个超码
- 3NF:对于
F
+
F^+
F+ 中所有形如
α
\alpha
α
→
\rightarrow
→
β
\beta
β 的函数依赖,一下至少一项成立
- α \alpha α → \rightarrow → β \beta β 是平凡的函数依赖
- α \alpha α 是模式R的一个超码
- β \beta β - α \alpha α 的每个属性A都包含于R的一个候选码中
18. 事物的ACID特性
- 原子性(atomicity):事物的所有操作在数据库中要么全部正确反映出来,要么完全不反应
- 一致性(consistency):隔离事务执行时,保持数据库的一致性
- 隔离性(isolation):每个事务感觉不到系统中有其他事务在并发执行
- 持久性(durability):一个事务成功完成后,它对数据库的改变必须是永久的,即使出现系统故障
19. 事务状态
- 活动的(active):初始状态,事务执行时处于这个状态
- 部分提交的(partially committed):最后一条语句执行后
- 失败的(failed):发现正常的执行不能继续后
- 中止的(aborted):事务回滚并且数据库已恢复到事务开始执行前的状态后
- 提交的(committed):成功完成后
20. 事务处于中止状态后的两种选择
- 重启(restart)事务:仅当引起事务中止的是硬件错误或不是由事务的内部逻辑所产生的软件错误时
- 杀死(kill)事务:由于事务的内部逻辑造成的错误,只有重写应用程序才能改正,或者由于输入错误,或所需数据在数据库中没有找到
21. 可恢复调度和无级联调度
- 可恢复调度:对于每对事务 T i T_i Ti 和 T j T_j Tj ,如果 T j T_j Tj 读取了之前由 T i T_i Ti 所写的数据项,则 T i T_i Ti 先于 T j T_j Tj 提交
- 无级联调度:对于每对事务 T i T_i Ti 和 T j T_j Tj ,如果 T j T_j Tj 读取了之前由 T i T_i Ti 所写的数据项,则 T i T_i Ti 必须 T j T_j Tj 在这一读操作前提交
22. 两阶段封锁协议
-
两阶段封锁协议:事务分两个阶段提出加锁和解锁请求
- 增长阶段:事务可以获得锁,但不能释放锁
- 缩减阶段:事务可以释放锁,但不能获得新锁
-
严格两阶段封锁协议:事务持有的所有排他锁必须在事务提交后方可释放
-
强两阶段封锁协议:事务提交之前不能释放任何锁
注:1. 两阶段封锁不能保证不会发生死锁,也不能避免级联回滚
2. 严格两阶段封锁可以避免级联回滚
23. 死锁处理
- 死锁避免:保证系统永不进入死锁状态
- 死锁检测与死锁恢复
24. 事务的作用
- 保证数据的一致性和完整性,避免异常和错误导致的数据信息异常
25. 并发控制的作用
- 保证事务的隔离性,避免因事务并发执行造成数据库中数据的不一致性
26. 封锁机制的优缺点
- 优点:
- 提高并发度
- 保证事务的隔离性
- 缺点:可能发生死锁和级联回滚