赞
踩
1)从用户角度
2)从系统角度
1)三级模式
2)两层映像
3)两级数据独立性
1)数据模型:规定模式统一描述方式的模型,包括:数据结构、操作和约束
数据模型是对模式本身结构的抽象,模式是对数据本身结构形式的抽象
由三个部分组成
1)实体完整性:关系的主码中的属性值不能为空值
2)参照完整性:如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2 中某个元组的Pk 值,或者为空值
3)用户自定义完整性:用户针对具体的应用环境定义的完整性约束条件
1)静态约束
2)动态约束
触发器:是用户定义在关系表上的一类由事件驱动的特殊过程, 当特定的系统事件(如表的增删改查操作,事物的结束)发生时,对规则的条件进行检查,若成立则执行
1)自主安全性机制
通过权限在用户之间的传递,使用户自主管理数据库安全性
DBMS将权利和用户(账户)结合在一起,形成一个访问规则表,依据该规则
表可以实现对数据库的安全性控制
2)强制安全性机制
通过对数据和用户强制分类,使得不同类别用户能够访问不同类别的数据
视图是一种虚拟的表,具有和物理表相同的功能
是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行
1)需求分析
2)概念数据库设计
两种设计思路:
要注意消除冲突
3)逻辑数据库设计
E-R图/IDEF1X图向关系模式的转换
注意要正确的设计数据库
4)物理数据库设计
1nf:关系中每个分量都是不可分的数据项
2nf:每个非主属性都完全函数依赖于候选键
3nf:不存在传递依赖
Bcnf:没有不依赖于候选键的函数依赖存在
多值依赖:对同一x值,有一组的y值与其对应,将y值交换后的新元组仍存在
4nf:若有多值依赖就一定依赖于候选键
需要关注的是数据内容是否等价,数据依赖是否等价
构造相应的表,根据函数依赖关系对表进行修改,若有一行变成a1, a2,…, an(全a), 则是无损连接分解,否则是有损连接分解
只需检查是否覆盖了G
首先用户发出相应的命令,再由索引文件记录管理器控制逻辑物理映射,发出相应的页面命令,缓冲区管理器控制内存分配,再由存储管理器控制磁盘读写
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组
事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。
回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。
数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。
一个事务所做的修改在最终提交以前,对其它事务是不可见的。
一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。
系统发生崩溃可以用重做日志(Redo Log)进行恢复,从而实现持久性。与回滚日志记录数据的逻辑修改不同,重做日志记录的是数据页的物理修改。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dlcmlUSH-1617080205188)(C:\Users\sydney\Desktop\复试总\复试科目\数据库.assets\image-20210326111032975.png)]
作用:提高存储表的访问速度
索引文件组织的两种方式:排序索引文件;散列索引文件
使用索引的注意事项:选择哪些属性创建索引;建立索引还需考虑索引的类型
稠密索引:对于主文件中每一个记录(形成的每一个索引字段值),都有一个索引项和它对应,指明该记录所在位置
稀疏索引:对于主文件中部分记录(形成的索引字段值),有索引项和它对应。要求—主文件必须是按对应索引字段属性排序存储,空间占用更少,维护任务更轻,但速度更慢
主索引:对每一存储块有一个索引项
辅助索引:是定义在主文件的任一或多个非排序字段上的辅助存储结构
聚簇索引—是指索引中邻近的记录在主文件中也是临近存储的;
非聚簇索引—是指索引中邻近的记录在主文件中不一定是邻近存储的。
B+树索引:非叶结点指针指向索引块,叶结点指针指向主文件的数据块或数据记录
可扩展散列索引:为桶引入一间接层,即用一个指向块的指针数组来表示桶,用i表示现在索引所用到的位数
线性散列索引:桶数n的选择总是使存储块的平均记录数保持与存储块所能容纳的记录总数成 一个固定的比例,例如80%。超过此比例,则桶数增长1块,分裂
丢失修改
丢失修改指一个事务的更新操作被另外一个事务的更新操作替换
读脏数据
读脏数据指在不同的事务下,当前事务可以读到另外事务未提交的数据
不可重复读
不可重复读指在一个事务内多次读取同一数据集合。在这一事务还未结束前,另一事务也访问了该同一数据集合并做了修改,由于第二个事务的修改,第一次事务的两次读取的数据可能不一致
幻影读
幻读本质上也属于不可重复读的情况,T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同
事务:应用程序员将一系列的数据库操作组合在一起作为一个整体进行操作和控制
事务调度:一组事务的基本步(读、写、其他控制操作如加锁、解锁等)的一种执行顺序称为对这组事务的一个调度
并发调度:多个事务从宏观上看是并行执行的,但其微观上的基本操作(读、写)则是交叉执行的
可串行性:如果不管数据库初始状态如何,一个调度对数据库状态的影响都和某个串行调度相同,则我们说这个调度是可串行化的
冲突可串行性:一个调度如果通过交换相邻两个无冲突的操作能够转换到某一个串行的调度,则称此调度为冲突可串行化的调度
1)锁的类型:排他锁X ;共享锁S ;更新锁U ;增量锁I
2)封锁类型
3)封锁协议
三级封锁协议
两段锁协议
加锁和解锁分为两个阶段进行
4)隔离级别
未提交读(READ UNCOMMITTED)
事务中的修改,即使没有提交,对其它事务也是可见的。
提交读(READ COMMITTED)
一个事务只能读取已经提交的事务所做的修改。换句话说,一个事务所做的修改在提交之前对其它事务是不可见的。
可重复读(REPEATABLE READ)
保证在同一个事务中多次读取同一数据的结果是一样的。
可串行化(SERIALIZABLE)
强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题。该隔离级别需要加锁实现,因为要使用加锁机制保证同一时间只有一个事务执行,也就是保证事务串行执行。
事务在启动时刻被赋予唯一的时间戳,以示其启动顺序。 为每一数据库元素保存读时间戳和写时间戳,以记录读或写该数据元素的最 后的事务。
通过在事务读写数据时判断是否存在冲突(读写冲突、写读冲突、写写冲突)
来强制事务以可串行化的方式执行
事务在启动时刻被赋予唯一的时间戳,以示其启动顺序。 为每一活跃事务保存其读写数据的集合,RS(T):事务T读数据的集合;WS(T):事务T写数据的集合。 通过对多个事务的读写集合,判断是否有冲突(存在事实上不可实现的行 为),即有效性确认,来完成事务的提交与回滚,强制事务以可串行化的方式执行
关系代数操作执行次序对效率的影响,如何使数据库查询的执行时间最短
三个层面进行优化:
语义优化:利用模型的语义及完整性规则,优化查询
语法优化—逻辑层优化:利用语法结构,优化操作执行顺序
改变关系代数的操作次序;尽可能早做选择和投影运算
执行优化—物理层优化:存取路径和执行算法的选择与执行次序优化
依据相关信息进行代价估算,并选择代价最少的例行程序及确定相应的参数
如何衡量物理查询计划的优劣呢
衡量I/O访问次数
衡量CPU的占用时间
内存使用代价(与缓冲区数目与大小的匹配)
故障恢复考虑如何保证事务的原子性和持久性
事务故障类型:事务故障;系统故障;介质故障
把DB由当前不正确状态恢复到已知为正确的某一状态
事务故障可通过重做事务(Redo)和撤消事务(Undo)来恢复。重做事务可保
如何衡量物理查询计划的优劣呢
衡量I/O访问次数
衡量CPU的占用时间
内存使用代价(与缓冲区数目与大小的匹配)
故障恢复考虑如何保证事务的原子性和持久性
事务故障类型:事务故障;系统故障;介质故障
把DB由当前不正确状态恢复到已知为正确的某一状态
事务故障可通过重做事务(Redo)和撤消事务(Undo)来恢复。重做事务可保
证已提交事务的持久性,而撤销事务则消除未提交事务的影响
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。