数据库复试
作者:互联网
DBA职责:决定数据库中的信息内容和结构、决定数据库的存取结构和存取策略、定义数据库的安全性要求和完整性约束条件、监控数据库的使用和运行、数据库的改进和重组重构。
SQL语言特点:综合统一,高度非过程化,面向集合的操作方式,以同一种语法结构提供多种使用方式,语言简洁、易学易用。
SQL语言数据定义功能:模式定义、表定义、视图和索引的定义
表和视图:表是实实在在的保存数据的实体,在sql中,每个关系就对应一个表。而视图是从一个或几个表中导出的表,是一个虚表,由查询定义,与基本表不同,在数据库中,只保存视图的定义,而不存放视图对应的数据,数据仍然保存在原来的基本表中。一旦表中的数据发生了变化,从视图查询到的数据也就随之改变了。表和视图都可以更新,但是视图的更新受到一定限制。视图就像是一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
视图的作用:视图能简化用户的操作、视图使用户能以多种角度看待同一数据、视图对重构数据库提供了一定程度的逻辑独立性、对机密数据提供安全保护、适当利用试图可以清晰地表达查询。
数据库的不安全因素:非授权用户对数据库的恶意存取和破坏、数据库中重要或敏感的数据被泄露、安全环境的脆弱。
数据库安全性控制的常用方法:用户标识和鉴别、存取控制、视图机制、审计、数据加密
自主存取控制:用户对不同的数据对象有不同的存取权限、不同的用户对同一对象也有不同的权限、用户可将存取权限转交给其他用户
强制存取控制:每一数据对象授予一定的密级,每一用户也被授予某一个级别的许可证。对于任意对象,只有合法许可证的用户才能存取。
审计:审计功能能把用户对数据库的所有操作自动记录下来并放入审计日志中。
完整性:阻止合法用户和合法操作向数据库中加入不正确的数据。(防止数据库中存在不符合语义的数据)
安全性:防范非法用户通过非法操作存取数据库中的正确数据。(保护数据库防止恶意的破坏和非法的存取)
为了维护数据库的完整性,数据库管理系统需实现的功能:提供定义完整性约束条件的机制、提供完整性检查的方法、进行违约处理。
触发器:用户定义在关系表上的一类由事件驱动的特殊过程。
数据依赖:一个关系内部属性与属性之间的约束关系(函数依赖、多值依赖)
不进行模式规范化产生的问题:更新异常、插入异常、删除异常、数据冗余
范式:符合某一种级别的关系模式的集合
第一范式:所有属性不可再分,都为简单属性
第二范式:在第一范式的基础上,消除非主属性对于主键的部分函数依赖
第三范式:在第二范式的基础上,消除非主属性对于主键的传递函数依赖。
BC范式:在第三范式的基础上,消除主属性对键的部分和传递函数依赖
数据库设计分为:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护。
概念结构设计:将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计
er图:实体、属性、关系三部分
联系类别:一对一、一对多、多对多
逻辑结构设计:将概念结构设计得到的er图转换为与dbms所支持的数据模型相符合的逻辑结构。
数据库管理常用的存取方法:索引方法、聚簇方法
最普遍的存取方法:hash索引、b+树索引。
dbms查询处理的四个阶段:查询分析、查询检查、查询优化、查询运行
游标:数据库系统为用户开设的一个数据缓冲区,存放Sql语句的执行结果。
查询树的启发式规则:选择运算尽可能先做、把投影运算和选择运算同时进行、把投影同其前或后的双目运算结合起来、把某些选择同在它前面的笛卡尔积结合起来成为一个连接运算、找出公共子表达式
连接操作常用算法:排序-合并算法、嵌套循环算法、索引连接算法、索引链接算法、hash join算法
事务:用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务提交(commit):事务的正常结束,将事务中所有对数据库的更新写回到磁盘的物理数据库中。
事务回滚(rollback):事务运行的过程中发生了故障,事务不能继续执行,系统将数据库中所有已完成的操作全部撤销,回滚到事务开始时的状态。
事务的特性:原子性、一致性、隔离性、持续性***
故障种类:事物内部的故障、系统故障(撤销所有未完成的事务、重做所有已提交的事务)、介质故障、计算机病毒
建立冗余数据常用技术:数据转储、登记日志文件
数据转储(数据库管理员定期将整个数据库复制到磁带或其他存储介质上保存起来的的过程)的分类:
静态转储、动态转储(海量转储、增量转储)
日志文件:用来记录事务对数据库的更新操作的文件
登记日志文件的原则:必须先写日志文件后写数据库、登记的次序严格按照并发事务执行的时间次序
日志文件的作用:事务故障恢复、系统故障恢复、协助后备副本进行介质故障恢复
并发控制的基本单位:事务
不进行并发控制产生问题:存取和存储不正确的数据、破坏事务的一致性和数据库的一致性
并发控制的主要技术:封锁、时间戳、多版本并发控制、乐观控制法
封锁:事务在对某个数据对象操作之前,先向系统发出请求,对其加锁
封锁类型:排他锁、共享锁
三级封锁协议:
一级封锁协议:事务在修改数据之前需要先对其加X锁,直到事务结束才释放。(解决丢失修改的问题)
二级封锁协议:一级封锁协议加上事务在读取数据之前必须先对其加S锁,读完以后即可释放S锁(解决读脏数据和丢失修改的问题)
三级封锁协议:一级封锁协议加上事务在读取数据之前先对其加S锁,直到事务结束才可释放(解决可重复读、丢失修改、读脏数据的问题)
活锁的解决方法:先来先服务
死锁的预防:一次封锁法(所有数据全部加锁)、顺序封锁法
死锁的检测与解除:超时法、等待图法
可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行的执行这些事务时的结果相同,称这种调度策略为可串行化调度。
二段锁协议:所有事务必须分两个阶段对数据项加锁和解锁。在对任何数据进行读写操作之前,首先要申请并获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁(扩展阶段、收缩阶段)
封锁粒度:封锁对象的大小叫封锁粒度
封锁粒度与系统的并发度和并发控制的开销密切相关
意向锁:如果对一个节点加意向锁,则说明该节点的下层节点正在被加锁。
数据字典通常包括:数据项、数据结构、数据流、数据存储、处理过程
索引的作用:通过创建表的唯一索引,保证数据记录的唯一性、可以大大加快数据检索速度、加速表表之间的连接
标签:封锁,事务,数据库,用户,视图,复试,数据 来源: https://www.cnblogs.com/beiweixiaoliu/p/16058792.html