数据库简答题汇总
一、数据库系统
现实世界到数据要经过三个领域:现实世界到信息世界(也称概念模型,由数据库设计人员完成),信息世界到计算机世界
1、什么是数据(data)和数据库(database)?
数据是数据库中存储的基本对象,数据库是长期存储在计算机内、有组织、可共享的大量数据集合。
数据库数据的三个基本特点:
- 永久存储
- 有组织
- 可共享
2、简述数据管理技术的发展过程?
人工管理阶段:
- 数据不保存
- 应用程序管理数据
- 数据不共享
- 数据不具有独立性
文件系统阶段:
- 数据可以长期保存
- 由文件系统管理数据
- 数据共享性差,冗余度大
- 数据独立性差
数据库系统阶段:
- 数据可以长期保存
- 由数据库管理系统统一管理和保存
- 数据结构化
- 数据共享性高,冗余度低且易扩充
- 数据独立性高
在人工管理阶段没有专门的软件对数据进行管理
3、简述数据库管理系统的功能
用来科学地组织和存储数据、高效地获取和维护数据。
- 数据定义功能
- 数据组织、存储和管理
- 数据操纵功能
- 数据库的事务管理和运行管理
- 数据库的建立和维护功能
- 其他功能
4、DBMS对数据的控制功能主要体现在
- 数据安全性保护
- 数据完整性检查
- 数据库故障恢复
- 并发控制
5、简述数据库系统的组成
数据库是长期存储在计算机内,有组织、可共享的大量数据的集合;
数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
数据库系统的核心是数据库管理系统DBMS
DBMS中实现事务持久性的是恢复管理子系统
应用数据库的主要目的是为了共享数据
数据库系统管理数据的主要特点是:
- 数据结构化
- 数据独立性高
- 数据共享性高、冗余度低、易扩充
- 数据由DBMS统一管理和控制
6、数据库管理员DBA 的职责是
数据库管理员DBA的职责是完整性约束说明和数据库安全
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据的安全性要求和完整性约束条件
- 监控数据库的使用和运行
- 数据库的改进和重组、重构
7、常用的数据模型(逻辑模型):
- 层次模型:用树型结构表示实体类型及实体间联系。
- 网状模型:允许一个以上的结点无双亲;一个结点可以有多于一个的双亲;用图结构表示实体类型及实体间联系。
- 关系模型:以二维表格结构来表示实体类型及实体间联系
8、数据模型应包括哪三个部分?试分别解释之。
数据模型包含数据结构,数据操纵,数据的完整性约束条件三个部分。
- 数据结构:描述数据库的组成对象以及对象之间的联系。
- 数据操作:是指对数据库中的各种对象(型)的实例(值)允许执行的操作的集合·,包括操作及有关的操作规则。
- 数据的完整性约束条件是一组完整性规则。
数据库系统结构为三级模式两级映像结构,对保证数据的独立性起到至关重要的作用。
11、简述数据库体系结构及其数据独立性的关系:
数据库系统可以概括为三级模式和二级映像,三级模式分别为外模式、模式和内模式,二级映像为外模式/模式映像和模式/内模式映像。模式是数据库整体逻辑结构的描述,一个数据库对应一个模式;外模式是数据库与外部应用程序对应的局部逻辑描述,一个数据库可以有多个外模式;内模式是数据库内部与存储及物理环境相关的逻辑描述,一个数据库对应一个内模式
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式是数据库的中心和关键。
12、数据库的独立性分为物理独立性和逻辑独立性。逻辑独立性是指外部的应用程序不会因为数据库逻辑结构的改变而改变,是由外模式/模式映像支持的;物理独立性是指外部应用程序不必因为数据库内部存储结构的改变而改变,是由模式/内模式映像所支持。
13、数据库的物理独立性:用户的应用程序与存储在磁盘上数据库的数据是相互独立的
14、数据库的概念模型独立于具体的机器和DBMS
二、数据库设计
E-R图就是数据库的概念模式
从数据流图构造E-R图,选择实体应先考虑数据流图中的数据存储
12、数据库设计的基本步骤有哪些?
- 需求分析:包含数据流图和数据字典描述;最困难,最耗时
- 概念结构设计:关系规范化处理
- 逻辑结构设计:建立索引
- 物理结构设计:选择存储结构、确定存取方法及路径等内容
- 数据库实施
- 数据库运行和维护
13、E-R图提供了表示实体型、属性和联系的方法
- 实体型用矩形表示
- 属性用椭圆形表示
- 联系用菱形表示
14、E-R图的三种冲突
- 属性冲突:属性域冲突和属性取值单位冲突
- 命名冲突
- 结构冲突
15、简述E-R图向关系数据模型转换的原则
每个实体都转换为一个关系模式
对图中联系的转换由联系的类型分三种情况:
- 1:1可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
- 1:N可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并
- N:M转换为一个关系模式
三、关系数据库
1、关系代数问题:
关系代数的五种基本操作:选择、投影、并、差、笛卡尔积
集合运算符:并、差、交、笛卡尔积
专门的关系运算符:选择、投影、连接、除
2、关系代数表达式的语法树中,叶子结点是关系,非叶子结点是操作
3、关系代数运算是以集合运算为基础的运算,其中,从一个数据库文件中取出满足某个条件的所有记录形成的一个新的数据库文件的操作是选择操作。
4、简述关系的三类完整性约束
- 实体完整性:主码的属性值不能为空
- 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
- 用户自定义完整性:对特定关系数据库的约束条件,反映某一具体应用必须满足的语义要求。
5、与传统的关系模型比较,对象关系模型有哪些扩充?
数据类型的扩充:引入符合类型(结构、数组、多集和集合类型)。在类型一级和表一级实现继承性(单重继承性和多重继承性)。定义引用类型。
6、关系模式的关键字:可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成
7、连接不会去掉重复列,而自然连接会去掉重复列
8、
超码:是一个或多个属性的集合,超码中的这些属性可以让我们在一个实体集中唯一地标识一个实体。
候选码:候选码是极小的超码集,也就是它的任意真子集都不是超码,而他本身是超码。
主码:若一个关系有多个候选码,则选定其中的一个为主码
一个关系只有一个主键
候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性
在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码
四、SQL
17、SQL语言问题:
SQL语言是非过程化的语言,是关系数据库语言,具有
数据定义(create,drop,alter)、
数据操纵(update,delete,insert)、
数据控制(grant,revoke)、
数据查询(select)的功能;
有两种基本使用方式,交互式SQL和嵌入式SQL
修改表的结构alter
对基本表的删除命令是DROP,对表中数据的删除命令是DELETE
HAVING用来筛选满足条件的分组
GRANT 和 REVOKE 两个语句分别是授予权限和回收权限语句,具有对 SQL语言的安全控制功能
五、数据库的安全性
1、数据库安全性控制的一般方法:
- 用户身份鉴别
- 多层存取控制
- 审计
- 视图
- 数据加密
2、存取控制
常用的存取控制方法:索引、hash、聚簇
存取控制:自主存取控制(DAC),强制存取控制(MAC)
实现强制存取控制时要首先实现自主存取控制
用户权限是由两个要素组成的:数据库对象和操作类型
定义存取权限称为授权,数据库管理系统提供的授权功能用来控制不同用户访问数据的权限,主要目的是实现数据库的安全性。
3、自主存取控制:用户可以将拥有的权限转给他人
授予权限:GRANT 权限 ON 表 TO 用户 WITH GRANT OPTION 表示可以再授予其他用户
收回权限:CASCADE 级联收回所有从这个用户身上出去的权限,相反的就是RESTRICT
4、强制存取控制:DBMS为每一个实例指派一个敏感度标记,主体是系统中的活动实体,客体是系统中的被动实体,受主体的操控。主体的敏感度标记叫做许可证级别,客体的叫密级
主体的许可证级别大于或等于客体的密级,主体才能读客体
主体的小于等于客体,主体才能改客体
5、视图问题
SQL中的视图提高了数据库系统的安全性
SQL中的视图是由基本表或视图产生的虚表,其结构和数据是建立在对表的查询的基础上的。
数据库中实际存放的是视图的定义
视图上不能定义新的表
基本表有对应的物理存储,视图没有对应的物理存储
为了简化用户的查询操作,不增加数据的存储空间,常用方法是创建视图。索引是加快查询
由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新
6、视图更新的规定
- 若视图是由两个以上基本表导出的,则此视图不允许更新
- 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作
- 若视图的字段来自聚集函数,则此视图不允许更新
- 若视图定义中含有CROUP BY子句,则此视图不允许更新
- 若视图定义中含有DISTINCT短语,则此视图不允许更新
- 若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则视图不允许更新
- 若视图是由单个表的列构成,但并没有包括主键,则不能更新
- 若视图时从单个表使用选择、投影操作导出的,并且包含了基本表的主键,则可以更新
7、视图的作用
视图能简化用户的操作
视图使用户能以多种角度看待同一数据
视图对重构数据库提供了一定程度的逻辑独立性
视图能够对机密数据提供安全保护
恰当利用视图可以更清晰的表达查询
六、数据的完整性
1、什么是计算机系统完整性?完整性约束条件作业的对象?
数据的完整性是指数据的正确性和相容性,防止不合语义的数据进入数据库。
列:对属性的取值类型、范围、精度等的约束条件
元组:对元组中各个属性列间的联系的约束
关系:对若干元组间、关系集合上以及关系之间的联系的约束
2、为维护数据库的完整性,数据库管理系统必须实现:
- 提供完整性约束条件的机制
- 提供完整性检查的方法
- 进行违约处理
SQL语句中完整性约束条件除可在CREATE TABLE中定义外,还可以使用子句定义,引导该子句的关键字为CONSTRAINT(constraint 强制、约束)
七、查询优化
查询优化分为代数优化(也称逻辑优化:关系代数表达式的优化)和物理优化(通过选择存取路径和底层算法优化)
查询处理主要分为四步:
- 查询分析
- 查询检查
- 查询优化
- 查询执行
24、试述RDBMS查询优化的一般准则?
- 选择运算尽可能先做
- 把投影运算和选择运算同时进行
- 把投影同其前后的双目运算结合起来执行
- 选择和笛卡尔积编成自然连接
- 找出公共子表达式
- 选取合适的连接算法
八、关系数据理论
规范化理论用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖以解决插入异常、删除异常、更新异常和数据冗余问题。
数据冗余(系主任名字重复出现)
更新异常(改系主任,每个元组都要改)
插入异常(没学生,系主任插入不了)
删除异常(学生走了,系主任信息没了)
在关系模式R(U,F)中。如果F是最小函数依赖集,则R的规范化程度与F为最小函数依赖集无关
第一范式1NF:所有属性不可再分,即数据项不可分
第二范式2NF:消除关系模式中非主属性对码的部分函数依赖
第三范式3NF:在2NF基础上,消除关系模式中非主属性对码的传递函数依赖
BC范式BCNF:在3NF基础上,消除关系模式中主属性对码的部分依赖和传递依赖。
第四范式4NF:限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。
关系模型中的关系模式至少是1NF
当关系模型中的关系模式已属于3NF时,仍存在一定的插入和删除异常
若关系模式R中的属性都是主属性,则R的最低范式为3NF,最高必定是3NF,可能为BCNF。
任何二元关系模式的最高范式必是BCNF 对关系模式进行分解时,要求保持函数依赖,最高可以达到3NF
由全码组成的关系模式,最高可以达到的模式为BCNF
关系模式分解为BCNF后,函数依赖关系可能被破坏
若关系模式R中,其函数依赖集中所有候选关键字都是决定因素,则R最高范式是4NF
当B属于函数依赖与A属性时,属性A与B的联系是多对一
2NF基本消除插入异常
在关系模式分解时,若要保证不丢失信息,分解应具有无损连接性
无损连接:将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式,则称这种分解为无损联接分解。
九、数据库恢复技术
1、什么是事务(Transaction),事务和程序的区别?
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务是数据库恢复和并发控制的基本单位
事务的特性(ACID):
- 原子性 A:事务是数据库逻辑工作单位,事务中包括的诸操作要么都做,要么都不做(最根本)
- 一致性 C:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
- 隔离性 I:一个事务的执行不能被其他事务干扰,即一个事务内部操作及使用的数据对其他并发事务是隔离的
- 持久性 D:一个事务一旦提交,它对数据库中的数据的改变就应该是永久的
事务和程序是两个概念:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序;一个应用程序通常包含多个事务。
为保证事务的隔离性和一致性需要并发控制
解决并发操作带来的数据不一致问题采用封锁技术
2、数据库故障可分为
- 事务故障:算数溢出、死锁等
- 介质故障:由于磁盘损坏或外存信息丢失所产生的故障
- 系统故障:是指造成系统停止运转的任何事件,使得系统要重新启动(会造成内存数据丢失)
3、数据库恢复
- 事务故障:事务没有达到预期的终点,恢复操作为事务撤销(UNDO)
- 系统故障:恢复操作为撤销故障发生时未完成的事务,重做已完成的事务(UNDO + REDO)
- 介质故障:磁盘上的数据和日志文件被损毁,很严重。恢复方法为重装数据库,重做已完成的事务。(重装备份并恢复到一致性状态 + UNDO+REDO)
制作数据后援副本的过程称为转储
数据依赖是一个关系内部属性与属性之间的一种约束关系。其中最重要的是:函数依赖、多值依赖
冗余是数据库恢复的原理;数据库中,导致数据不一致的根本原因也是数据冗余度大。
3、日志文件
事务故障和系统故障必须用日志文件
动态转储必须用日志文件
先写日志,在写数据库
用于数据库恢复的重要文件:日志文件
日志文件用于记录对数据的所有更新操作
创建日志的目的是为了可以恢复已经损坏的数据库
4、数据镜像可用于数据库恢复,也可以用于并发操作。
5、数据转储是数据库恢复技术中采用的基本技术,其所采用的备份数据被称为后备副本。
22、数据的转储
6、数据转储是数据库恢复中采用的基本技术
两种转储方式:海量转储、增量转储
两种转储状态:动态转储、静态转储
十、并发控制
并发控制要解决的根本问题是保持数据库状态的一致性
1、数据库并发操作通常会带来的问题
- 丢失修改
- 不可重复读
- 读“脏”数据
2、锁是什么?
事务是并发控制的基本单位,锁是实现事务的关键,锁可以保证事务的完整性和并发性。
3、什么是排他锁?什么是共享锁?
排他锁又称写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
共享锁又称读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁为止。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
事务对数据库数据进行查询操作时,必须首先获得对该数据集合的共享锁。
4、什么是活锁与死锁?
活锁:是指当事务T1封锁了数据R,事务T2请求封锁数据R,于是T2等待,当T1释放了R上的封锁后,系统首先批准了T3请求,于是T2仍等待,当T3释放了R的封锁后,又批准了T4请求……使得T2可能永远等待。这种现象就是活锁。
一个事务一直等待资源
避免活锁的简单方法就是采用先来先服务的策略。
死锁:是指两个以上的事务分别请求封锁对方已经封锁的数据,导致长期等待而无法继续运行下去的现象叫做死锁
死锁预防:一次封锁法,顺序封锁法
死锁诊断解除:超时法,等待图法
5、封锁协议
数据库的并发操作带来的数据库数据不一致问题,可以利用封锁解决。
DBMS普遍采用封锁方法来保证调度的正确性。
- 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。可以防止丢失修改
- 二级封锁协议:在一级封锁协议基础上增加事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。除可以防止丢失修改,还可以进一步防止读“脏”数据。
- 三级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。除了防止丢失修改和读“脏”数据外,还进一步防止了不可重复读。
6、封锁的粒度
封锁对象的大小称为封锁粒度。
封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越少;反之,封锁的粒度越小,并发度较高,但系统开销也就越大。
7、并发调度的可串行化
DBMS对并发事务不同的调度可能会产生不同的结果,多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行这些事务时的结果相同,称这种调度策略为可串行化调度。可串行性(serializability)是并发事务正确调度的准则。
事务遵守两段锁协议是可串行化调度的充分条件
8、两段锁协议是指所有的事务必须分两个阶段对数据项加锁和解锁
9、事务处理技术主要包括并发控制和数据库恢复技术
10、简述DB的并发控制和恢复有什么关系?
如果采用封锁机制,事务并发操作时有可能产生死锁。为了解除死锁状态,就必须抽取某个事务作牺牲品,把它撤销,做回退操作,这就属于DB的恢复范畴。
数据库系统中的三级模式定义存放在数据字典中
视图建立后,在数据字典中存的是产生视图的表定义
抽象机制包括:分类、聚集、概括
解答题
1、求候选码
R:只出现在右边的属性
L:只出现在左边的属性
N:两边都没有出现的属性
LR:两边都出现过的属性
L中的属性一定会出现在候选码中,而R的属性一定不会出现在候选码中
此外还要判断LR+N
2、求最小依赖函数集
最小依赖集满足的三个条件
① F中的任何一个函数依赖的右部仅含有一个属性(右部单属性)
② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价(不存在冗余函数依赖)
③ F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价(不存在冗余决定属性)
求最小依赖函数集过程
- 将所有依赖的右部划分为单属性
- 顺序检测每一个依赖判断其是否冗余
- 判断依赖的左部是否有多余属性
3、保持函数依赖分解为3NF
- 求最小函数依赖集
- 看是否包含所有属性
- 相同左部合并
4、保持函数依赖和无损连接性分解为3NF
- 先分解为保持函数依赖的3NF
- 查看是否包含候选码,不包含加上
5、保持无损连接分解为BCNF
- 先求出关系模式的候选键
- 找出一个左边属性集不包含候选键的函数依赖
- 将这个函数依赖从F中分离
- 重复第2条
6、判断分解后的关系模式是否保存无损连接性
画表格