数据库系统教程-简答题-合集

梁君牧
• 阅读 1494

数据库系统教程-简答题-合集

教材参考的是 《数据库系统教程》(第三版)施伯乐 复试的最后两天了,临时抱抱佛脚!加油!

(一) 数据库概论

1.简述什么是数据库以及数据库系统的主要特点

答:

  • 数据库是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
  • 数据库系统的主要特点有:
    1. 结构数据化。
    2. 数据的共享性高,冗余度低,易扩充。
    3. 数据独立性高。
    4. 数据由DBMS统一管理和控制。

2.简述数据库的三级模式结构

答: 数据库三级模式分为外模式、模式、内模式。

  • 外模式。又称子模式,是数据库用户可以看到和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,外模式是模式的子集,一个数据库可以有多个外模式。
  • 模式,又称概念模式,是数据库中全体数据的逻辑结构和特征描述,是所有用户的公共视图,一个数据库只有一个模式。
  • 内模式,又称存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的组织方式。

3.简述数据库的二级映像功能和数据独立性

答:

  • 数据库的二级映象分为外模式/模式映像、模式/内模式映像
  • 数据独立性分为逻辑独立性和物理独立性。
    • 逻辑独立性:是由外模式/模式映像保证的,当模式发生改变时,DBA对外模式/模式的映射作出相应改变,使外模式保持不变,保证了数据的逻辑狂性。
    • 物理独立性:是由模式/内模式映像保证的,当数据库在存储结构发生变化时,DBA是对模式/内模式映射作出改变,使得模式不变,保证了数据的物理独立性。

4. 数据之间联系在各种逻辑模型中是怎么实现的?

答:

  1. 在层次、网状模型中,数据之间的联系通过指针实现的。
  2. 在关系模型中,数据之间联系通过外键和主键间联系实现的。
  3. 在面向对象模型中,数据之间嵌套、递归联系通过对象标识符实现的。

5. 数据库管理系统的主要功能有哪些?

答:

  1. 数据定义功能:提供数据定义语言,定义数据库中的数据对象。
  2. 数据控制功能:提供数据操纵语言,实现对数据库的基本操作。
  3. 数据库的保护管理:提供数据的安全性、完整性、多种对用户数据的并发使用、恢复数据库的保护管理。
  4. 数据库维护功能:提供实用程序工具,完成数据库数据批量装载,数据库转储,介质故障恢复,数据库的重组织和性能监视等。

(二) 关系数据库

1. 基本关系具有的性质包括哪些?

答:

  1. 列是同质的。同一属性名下的诸属性值是同类型数据,且必须来自同一个域。
  2. 列的次序无所谓,可以任意交换。
  3. 行的次序无所谓,可以任意交换。
  4. 任意两个元组不能完全相同。
  5. 不同的列属性必须有不同的属性名。
  6. 不允许“表中套表”,即分量必须取原子值每一个分量必须是不可分的数据项。

2. 外键值何时允许空?何时不允许空?

答:

  • 在依赖表中,当外键是主键的组成部分时,外键值不允许空;否则外键值允许空。

3. 等值联接、自然联接三者之间有什么区别?

答:

  1. 等值连接不一定是自然连接,但自然连接一定是等值连接。
  2. 等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
  3. 等值连接不把重复的属性除去;而自然连接要把重复的属性除去。

4. 试述关系模式的三个组成部分?

答:

  1. 关系数据结构。
  2. 关系操作集合。
  3. 关系完整性约束。

5. 简述关系模式中可能存在的冗余和异常问题?

答:

  1. 数据冗余:指同一数据被反复存储的情况。
  2. 更新异常:数据冗余造成的,多个内容更改使操作错误。
  3. 插入异常。
  4. 删除异常。

6. 简述元组、超键、候选键、主键、外键?

答:

  • 元组:即记录,与二维表中的行对应。
  • 超键:能惟一标识元组的属性或属性集,称为关系的超键。
  • 候选键:不含有多余属性的超键,称为候选键。
  • 主键:正在使用的、用于标识元组的候选键,称为主键。
  • 外键:属性集 F 是基本表 S 的主键,在基本表 R 中也出现,那么称 F 是模式 R 的外键。

(三) SQL语言

1. 简述SQL语言的组成部分?

答:

  1. 数据定义语言,用于定义、修改、删除数据库表结构、视图、索引等。
  2. 数据操纵语言,用于对数据库中的数据进行查询和更新操作。
  3. 数据控制语言,用于设置数据库用户的各种操作权限。
  4. 事务处理语言,用于保证数据库中数据的完整性。

2. 简述SQL语言的特点?

答:

  1. SQL风格统一。
  2. 高度非过程化。
  3. 面向集合的操作方式。
  4. 语言简洁,易学易用。

3. 简述视图和表的区别?

答:

  • 视图实际上是从一个或多个基本表或已有视图中派生出来的虚拟表,也是一个关系。通过操作视图而达到操作基本表数据的目的。
  • 在数据库中只存在视图的定义,不存在数据,表既有数据又有定义。

4. 简述视图的优点?

答:

  1. 视图能够简化用户操作。
  2. 视图使用户能以多种角度看待同一数据。
  3. 视图对重构数据库提供了一定程度的逻辑独立性。
  4. 视图能够对机密数据提供安全保护。

5. 请问视图是否都可以更新?

答:

  • 不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的。

6. 什么是存储过程?用什么来调用?

答:

  • 存储过程是一个预编译的SQL语句,简单的说存储过程是为了完成某个数据库中的特定功能而编写的语句集。
  • 可以用一个命令对象来调用存储过程(CALL)。

(四) 关系数据库的规范化设计

1. 如何理解数据规范化过程/概述范式?

答: 常见的范式有1IN、2NF、3NF、BCNF,它们的规范化程度是逐步提高的。

  • 1NF是指数据库表的每列都是不可分割的数据项,只要是关系型数据库都要满足1NF。
  • 2NF是在1NF的基础上消除了非主属性对码的部分依赖。
  • 3NF是在2NF的基础上消除非主属性对码的传递依赖。
  • BCNF是在3NF的基础上消除了主属性对码的传递依款和部分依赖。

2. 规范化理论对数据库设计有什么指导意义?

答:

  • 关系数据库的设计直接影响着应用系统的开发,维护及其运行效率。
  • 一个不好的关系模式会导致插入异常,删除异常,修改异常,数据冗余等问题。
  • 为此,人们提出了关系数据库规范化理论。它依据函数依赖,采用模式分解的方法,将一个低一级范式的关系模式转换为若干个高一级范式的关系模式的集合,从而消除各种异常,把不好的关系数据库模式转化为好的关系数据库模式。

(五) 数据库设计与ER模型

1. 简述数据库设计的基本步骤和内容?

答:

  1. 需求分析:了解用户对数据的加工要求,确定系统的功能与边界。
  2. 概念结构设计:通过对用户需求进行综合、归纳、抽象,形成一个独立于具体DBMS的概念模型。
  3. 逻辑结构设计:在概念结构设计的基础上,按照一定的规则,将概念模型转换为某个DBMS所支持的数据模型,并将其进行优化。
  4. 数据库物理设计:数据库物理设计是为逻辑数据模型选取一个最适合应用环境的物理结构。
  5. 数据库实施:编制与调试应用程序。组织数据入库,并进行试运行。
  6. 数据库运行和维护:对数据库运行情况进行监控、收集、登记,不断地对其进行评价、调整与修改。

2. 数据字典的内容和作用是什么?

答:

  • 数据字典是系统中各类数据描述的集合。数据字典的内容通常包括:数据项、数据结构、数据流、数据存储、处理过程五个部分。
  • 数据字典是关于数据库中数据的描述,在需求分析阶段建立,是下一步进行概念设计的基础,并在数据库设计过程中不断修改、充实、完善。

3. 什么是ER图?

答:

  • E-R图又称实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系。
  • 其表示方法为:实体,用矩形表示,矩形框内写明实体名。属性,用椭圆表示,并用无向边与相应实体相连。联系,用菱形表示,菱形框内写明联系名。

4. 简述ER模型设计中应该遵循的原则(视图集成)?

答:

  1. 首先针对特起用户的应用,确定实体、属性、联系,作出反映该用户视图的局部E-R图。
  2. 综合各个用户的局部E-R图,产生反映数据库整体概念的总体E-R图。在综合时,删掉局部E-R图中的同名实体,以便消除冗余,保持数据的一致性。
  3. 综合时也可以在总体E-R图中增加新的联系。经过综合的E-R图应尽量能真实地模拟现实世界,也容易被用户理解。

5. ER图转换成关系模式集的具体思想是什么?

答:

(六) 数据库恢复

1. 简述事务和事务特性?

答: 事务是一列数据操作的集合,要么通过commit一起成功,要么通过rollback一起回滚,具有ACID特性。

  • A即原子性,事务是最小的操作集会,不可再分割。
  • C即一致性,数据库在事务执行前后都保持一致,在一致性前提下,所有事务对同一个数据的读取结果都是相同的。
  • I即隔离性,一个事务所做的修改在其提交之前,对其它事务是不可见的。
  • D即持久性,事务提交之后,所有对数据的修改都永远保存在数据库中。

2. UNDO和REDO操作各做些什么事情?

答:

  • UNDO操作是反向扫描日志文件,撤销对数据的更新操作,使数据库恢复到更新前的状态。
  • REDO操作正向扫描日志文件,重新做一次更新,使数据库恢复到更新后的状态。

3. 数据库恢复的基本技术有哪些?

答:

  • 数据转储和登记日志文件。
  • 当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。

4. 登记日志文件遵循的两条原则是什么?

答:

  1. 必须先写日志文件,后写数据库。
  2. 登记次序严格按照并发事务执行的时间次序。

5. 数据库运行中可能产生的故障有哪几类?

答:

  1. 事物内部的故障
  2. 系统故障
  3. 介质故障
  4. 计算机病毒

6. 数据库故障恢复策略有哪些?

答:

  • 事务故障恢复:由系统自动完成。反向扫描日志,对事务更新操作执行逆操作。
  • 系统故障恢复:由系统重后时自动完成,正向扫描日志,起录REDO队列和UNDO队列,对UNDO队列进行撤销处理,对REDO队列进行重做处理。
  • 介质故障恢复处理:装载数据备份,对于正在执行的而未完成的事务做Undo操作,再需对从最近的备份开始到故障前的所有事务做Redo操作,数据库即恢复至故障前的一致性状态。

7. 检查点机制的主要思想是什么?COMMIT语句与检查点时刻的操作如何协调?

答:

  • 检查点机制的主要思想是在检查点时刻才真正做到把对DB的修改写到磁盘。在DB恢复时,只有那些在最后一个检查点到故障点之间还在执行的事务才需要恢复。
  • 事务在COMMIT时,事务对DB的更新已提交,但对DB的更新可能还留在内存的缓冲区,在检查点时刻才真正写到磁盘。

8. 什么是数据库镜像?它有什么用途?

答:

  • 数据库镜像是指把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。
  • 用途:
    1. 用于数据库恢复。当出现介质故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。
    2. 提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据。

(六) 数据库并发控制

1. 数据库隔离级别不够时容易出现哪几种情况?

答:

  1. 脏读:即事务A读取到了事务B未提交的数据。该数据可能不是最终数据而是中间变量,因此会导致事务A读取到错误的数据。
  2. 不可重复读:即事务A多次访问同一个数据,获得结果不相同。在访问间隔时,事务A访问数据被事务B修改,导致事务A多次读取到不一样的数据值。
  3. 幻读:即事务A在读取某些数据时,事务B通过插入或删除等方式对数据集进行了修改,导致事务A读取到了事务B执行后的结果。

2. SQL为脏数据提供了哪几种隔离级别,简述它们之间的区别?

答:

  1. 可读取未提交: 进行写事务时阻止其他写事务。可能存在的问题:脏读。
  2. 可读取已提交: 进行写事务时阻止其他读写事务。可能存在的问题:不可重复读。
  3. 可重复读: 进行读事务时阻止其他写事务。可能存在的问题:幻读。
  4. 串行化: 对读事务加共享锁,写事务加排他锁。

3.并发操作可能会产生哪几类数据不一致?

答:

  1. 丢失修改
  2. 读脏数据
  3. 不可重复读

解决并发操作带来的问题可以用封锁技术和时标技术。

4.封锁协议可分成哪个级别?各解决了什么问题?

答:

  1. 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。解决了丢失修改的问题。
  2. 二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。解决了丢失修改、读脏数据的问题。
  3. 三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。 解决了丢失修改、读脏数据、不可重复读的问题。

5.试述两段锁协议的概念?

答: 两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁。

  • 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。
  • 在释放一个封锁之后,事务不再申请和获得任何其他封锁。

6.什么是封锁的粒度?封锁粒度的大小对并发系统有什么影响?

答:

  • 封锁对象的大小称为封锁的粒度。
  • 封锁的粒度越大,数据库能够封锁的数据单元就越少,并发性就越小,同时系统的开销也就越小。
  • 封锁的粒度越小,数据库能够封锁的数据单元就越多,并发性就越大,同时系统的开销也就越大。

7. 封锁带来了哪些问题?

  • 活锁 系统中某个事务永远处于等待状态,得不到封锁。 解决方法:先来先服务

  • 饥饿 每个事务都申请加S锁,且一小段时间释放,欲加X锁,没有机会。

  • 死锁 两个或两个以上事务处于等待状态,且每个事务都在等待另一个事务解除。

8.如何解除死锁状态?

答:

  • 数据库首先使用超时法判断发生了死锁,可选取某个处理死锁代价最小的事务作为牺牲品,把它撤销的方法,做ROLLBACK操作来解决。

9. 试叙述“串行调度”与“可串行化调度”的区别?

答:

  • 如果多个事务依次执行,则称事务串行调度。
  • 如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。可串行化调度是数据库系统正确的调度。

(七) 数据库完整性

1. 简述SQL中基于属性的约束、基于元组的约束及断言这三种用户自定义约束的区别于联系??

答:

  1. 基于属性的检查,只对一个属性值加以约束,不能保证数据一致性。
  2. 基于元组的检查,对单个关系的元组值加以约束,不能保证数据一致性。
  3. 基于断言的检查,是对多个关系或聚合操作的约束,可以保证数据一致性。

2. DBMS的完整性控制机制应具有哪几个方面的功能?

答:

  1. 定义功能:提供定义完整性约条件的功能。
  2. 检查功能:检查用户发出的操作请求是建背了完整性约束条件。
  3. 违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。

3. 什么是数据库完整性?

答:

  • 数据完整性是指数据库的数据要符合语义反应实际状况的正确性,以及数据库同一对象在不同关系表中的数据,是否符合逻辑的相容性。

4. SQL提供了的完整性规则有哪几类?

SQL中提供的完整性约束条件包括实体完整性,参照完整性和用户定义完整性。

  • 实体完整性约束:一般在一个表中规定一个主键,主键的值必须存在、不为空值且唯一。
  • 参照完整性约束:涉及两个或两个以上关系的数据一致性的维护。一般是使用外键来实现参照完整性约束。
  • 用户自定义完整性约束:用户自己定义的特殊约束。可以使用基于属性的约束、基于元组的约束及断言来实现用户自定义完整性约束。

(八) 数据库安全性

1. 试述实现数据库安全性控制的常用方法和技术?

答:

  1. 用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
  2. 存取控制:通过采取自主存取控制方法、强制存取控制方法,确保只有合法权限的用户访问数据库。
  3. 视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
  4. 建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
  5. 数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。

2. 简述数据库中的自主存取控制方法和强制存取控制方法?

答:

  • 自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
  • 强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。

3. 理解并解释MAC机制中主体、客体、敏感度标记的含义?

答:

  • 主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程。
  • 客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。
  • 对于主体和客体,DBMS为它们每个实例指派一个敏感度标记。敏感度标记被分成若干级别,例如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。

4.统计数据库中存在何种特殊的安全性问题?

答:

  • 存在隐蔽的信息通道:统计数据库不允许查询单个记录信息,但允许查询聚类函数的信息,如合计、平均值、最大值、最小值等。所以,人们可以从合法的查询中推导出不合法的信息,即可能存在隐蔽的信息通道,这是统计数据库要研究和解决的特殊的安全性问题。
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
梁君牧
梁君牧
Lv1
春分至情花开,不负春光不负你。
文章
3
粉丝
0
获赞
1