数据库概念关键词
各章小结的概念、关键词
四个部分
- 关系型数据库
- 数据库设计
- 底层物理存储实现
- 事务管理和恢复
关系型数据库
第一章
基础概念 在后续章节都有
- 关系型数据库
- 数据库设计
- 底层物理存储实现
- 事务管理和恢复
第二章
关系型数据模型
- 主码 码 外码
- 主码约束(参照性约束如何添加)
- 参照完整性约束:其实就是外键约束
- 外码的参照关系
数据库查询语言
关系代数(面向过程)
关系代数常用操作
- 投影
- 连接
- 交并差…
- 复杂查询
- 关联查询
SQL
SQL是面向用户的
第三章
数据库定义语言(DDL)
- 数据库建表
- 对表结构的修改
数据库操作语言(DML)
- 增删改查 常见操作
- 复杂查询(关联 嵌套)
完整性约束
- 主码约束
- 用户自定义约束
第四章
- 完整性约束的类型
- 视图和权限
第五章
程序里访问SQL语句:
- Python
- Java JDBC
- C++
第六章
关系代数与SQL对应关系(查询优化会用到)
数据库设计
第七章
- ER图
- 关系模式 (转换)
数据库设计包含哪几个阶段?每个过程用来干什么的?ER图在哪个阶段?(概念设计阶段)
逻辑阶段(ER图转化为关系模式)
给定数据需求, 画出ER图
给定ER图,写出关系模式
弱实体集如何表示?
联系集如何表示?有哪些类型?映射基数如何判定?
根据数据需求 判断映射基数 用ER图表示出来
外键约束 合并
外键一般放在many那一端
多值属性 复合属性如何表示?
第八章 关系规范化
各个关系范式:
- 1范式
- 2范式
- 3范式
- BC范式
如何判定?
- 候选码
- 属性闭包
原则:无损连接分解 函数依赖保持
合并律 分解律 伪传递律
数据存储
第十章
存储相关的文件结构:
- 堆
- 序列
- 哈希
- 多簇
索引文件:可用于加速查询。
索引的类型有哪些?
- 顺序索引
- 散列索引
- 还可以继续细分
什么场景选择什么类型的索引?
主索引 聚集索引的原理是什么?
索引加在哪个属性上可以加速查询(例如select)呢?加在哪会减速?
什么索引方式是有帮助的?
十二、十三章:
查询处理的过程(P、O、E)
- P:语法分析与翻译
- O:优化
- E:执行
查询—>语法分析器与翻译器—>关系代数表达式—>优化器—>执行计划—>执行引擎—>查询结果
代价评估:CPU时间、磁盘存取、并行/分布式数据库系统中的通信代价。
大型数据库中磁盘存取数据的代价是主要的代价。
查询优化(核心),怎样做查询优化?
- 找到等价的表达式,写出优化后的查询树
- 基于代价式的优化、基于启发式的优化?
- 启发式优化策略
优化策略:
- 选择 投影尽可能先执行(在连接之前执行)
- 分配律的使用
事务管理和事务的调度、并发控制、恢复
事务的几个特性、每个特性是如何书写的
ACID:
- Atomicity
- Consistency
- Isolation
- Durability
四大特性解析:
- 原子性:全或无
- 一致性:隔离执行事务
- 隔离性:并发(每个事务感觉不到系统中有其他事务在并发地执行)
- 持久性:事务完成后 对数据库的改变是永久的
如何判定事务的调度是有效的?
- 冲突可串行化。
- 如果调度S可以经过一系列非冲突指令交换转换成S’,我们称S与S’是冲突等价的。
- 若一个调度S与一个串行调度冲突等价,则称调度S是冲突可串行化。
- 为确定一个调度是否冲突可串行化,可以使用优先图的方法。并且调用环检测算法。
如何判断事务的调度是可恢复的?说明原因。
- 一个可恢复的调度(recoverable schedule)应满足:
对于每对事物Ti和Tj,如果Tj读取了之前由Ti所写的数据项,则Ti先于Tj提交。 - 原因:若出现部分调度的情况,后一个事务中读取了前一个事务写的内容,但是前一个事务之后并没有提交并且发生了故障,那么后一个事务无法在故障后正确恢复。
第十五章:锁
并发控制
给一个并发调度,判断是否符合。
第十六章:事务恢复
如何写日志
如何根据日志恢复事务
数据库概念关键词
https://liaoweiquan.github.io/2019/01/12/数据库笔记/