数据库问题

数据库常见问题详解大全(二)

  9.where子句:根据where子句的条件表达式,从FROM子句指定的基本表和视图中找出满足条件的元组。

  10.相关子查询和不相关子查询

  相关子查询:子查询的查询条件依赖于父查询的某个属性值:EXISTS

  由 外向内处理

  不相关子查询:子查询的查询条件不依赖于父查询:IN

  由里向外处理

  第四章

  1.计算机系统的三类安全性:技术安全类、管理安全类、政策法律类

  2. 什么是数据库的安全性?

  保护数据库以防止不合法的使用所造成的数据泄露、更改、或破坏

  3.试论述数据库安全性控制常用的方法和技术

  用户身份鉴别、存取控制、视图机制、审计、数据加密

  4.什么是数据库的自主存取控制方法和强制存取控制方法?

  自主存取控制:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时,首先检查用户的存取权限,防止不合法用户对数据的存取。

  强制存取控制:每一个数据对象都被强制的标以一定的密级,每一个用户也被授予某一个级别的许可证,系统规定只有具有某一级别的用户才能存取某一密级的数据对象。

  5.存取控制机制是如何确定确定能否存取客体的

  强制存取的规则:

  仅当主体的许可证级别大于或等于客体的密级时才能读相应的客体。

  仅当主体的许可证级别等于客体的密级时才能写相应的客体

  6.为什么强制存取提供了更高级别的数据库安全性?

  因为强制存取他是对用户本身进行密级标记,无论数据如何复制,标记与数据都不可分,只有符合密级标记要求的用户才能操作数据,从而具有了更高的安全性

  7.SQL语言中提供了数据控制功能的语句

  SQL中的自主存取控制是通过GRANT和REVOKE 语句来实现的

  8.角色的作用:角色是一组权限的集合,可以简化授权的过程 create role

  9.审计概念

  将用户对数据库的操作都自动记录到审计日志上

  因为任何系统的安全保护措施并不是完美无缺的,蓄意破坏数据的人总可能存在,利用好数据库的审计功能可以追踪信息,重现导致现有状况的一系列事件,从而找出非法存取数据的人,时间和内容。

  10.数据加密:替换方法、置换方法

  第五章

  1.数据库的完整性与数据库的安全性的区别

  (1)数据库的完整性:是指数据的正确性和相容性,防止不合语义的数据,防止错误信息的输入输出,及所谓的垃圾进,垃圾出所造成的无效操作和错误结果

  (2)数据库的安全性:是指保护数据库以防止不合法的使用所造成的数据的泄露、更改、和破坏。

  安全性的防范对象是非法用户的操作

  完整性的防范对象是不合语义的数据

  2.数据库系统为了维护数据库的完整性所提供的功能(关系数据库管理系统DBMS的完整性机制应具有哪些功能?)

  (1)定义功能:(提供定义完整性约束条件的机制)

  (2)检查功能:(检查用户发出的请求是否违背了完整性约束条件)

  (3)违约处理功能:(如果发现违背了完整性约束条件,则采取一定的动作来保证数据的完整性)

  3.什么是数据库的完整性约束条件?可分为几类?

  完整性约束条件是指数据库中的数据应该满足的语义约束条件

  静态列级约束、静态元组约束、静态关系约束、

  动态列级约束、动态元组约束、动态关系约束、

  4.关系系统中,当操作违反了实体完整性、参照完整性和用户定义完整性的约束条件时,一般如何分别进行处理?

  对于实体完整性和用户定义的完整性,一般采用拒绝执行的方式进行处理。

  对于违反了参照完整性的并不是简单的拒绝执行,有时候也要根据应用语义来附加操作,保证数据库的正确性。

  第六章(一定要看PPT)

  1.范式:规范化的关系,符合某一种级别的关系模式的集合

  2.1NF:若关系模式R的每一个分量都是不可分的数据项,则关系模式R属于第一范式。

  3.2NF:若关系模式R属于1NF,且每一个非主属性都完全函数依赖于码,则关系模式属于2NF。

  4.3NF:若关系模式R属于2NF,且每一个非主属性既不部分依赖也不传递依赖于码,则关系模式属于3NF。

  5.BCNF:关系R中的所有决定因素都是候选码

  (所有的非主属性,对于每一个码,都是完全函数依赖。

  所有的主属性,对于每一个不包含它的码,也是完全函数依赖

  没有任何属性完全函数依赖于非码 的任何一组。)

  5.数据依赖的类型:函数依赖、多值依赖

  函数依赖:若关系模式R(U)是属性集U上的关系模式,X、Y是U的子集,若对于R(u)上的任何一个关系R,R中不可能存在两个元组t,s在X属性值相等,而在Y属性值上不等。则称X函数确定Y。

  通俗讲:对于X的一个值,只有唯一的Y值与之对应,则称X—Y

  非平凡的函数依赖:在关系模式R(u)中,对于U的子集X和Y,X→Y,且Y不属于X 则称为非平凡的函数依赖。

  通俗讲:X能确定Y ,但是Y不是X的子集。

  平凡的函数依赖:在关系模式R(u)中,对于U的子集X和Y,X→Y,且Y属于X 则称为平凡的函数依赖。

  通俗讲:X能确定Y ,且是Y是X的子集

  完全函数依赖:在关系模式R(u)中,若X→Y,并且对于X的任何一个真子集都不能函数确定Y,则称Y完全函数依赖于X

  部分函数依赖:在关系模式R(u)中,若X→Y,并且对于X的某一个真子集都能函数确定Y,则称Y部分函数依赖于X

  传递函数依赖:

  在关系模式R(u)中,若X→Y,Y不能函数确定X,Y→Z,则称Z传递函数依赖于X

  超码:

  若在属性集U中,某一属性组K,能部分函数确定U,则称K为超码

  候选码:

  若在属性集U中,某一属性组K,能完全函数确定U,则称K为候选码

  若决定因素只有一个属性,则必然是完全函数依赖。所以必然属于2nf

  若所有的属性都是主属性,则R的规范化程度至少达到了3NF

  全码的最高范式BCNF

  二元关系最高范式4NF

  6.关系模式可能存在的问题:插入、删除、修改异常、数据冗余

  7.什么是规范化,为何要规范化,如何规范化?

  规范化:一个低一级的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程就叫做规范化。

  为什么:因为一个不好的关系存在插入删除修改异常、数据冗余,为了解决这些问题,来改造关系模式。

  如何规范化:

  规范化的步骤:

  非规范化表将其属性转换为最基本不可分的数据项

  1NF→2NF消除非主属性对候选码的部分依赖

  2NF→3NF 消除非主属性对候选码的传递依赖

  3NF→BCNF 消除主属性对码的部分和传递函数依赖

  BCNF→4NF消除非平凡且非函数依赖的多值依赖

  8.阿姆斯特朗公理系统:

  自反律:若Y是X的子集,则必然有X→Y为函数依赖F所蕴含。

  增广律:若X→Y为函数依赖F所蕴含,且Z属于集合U,则XZ→YZ为F所蕴含

  传递律:X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。

  推到规则:

  合并规则:X→Y,X→Z,有X→YZ

  伪传递规则:X→Y,WY→Z,有WX→Z

  分解规则:由X→YZ,则有X→Y,X→Z。

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

  (1)需求分析阶段,用数据依赖的概念来分析和表示各个数据项之间的联系

  (2)概念结构设计阶段,用规范化理论为工具来构造实体类型和联系类型,设计ER模型并对其进行优化。

  (3)在逻辑设计阶段,使用规范化理论来设计和评价模式

  10.模式分解的标准(分解的等价标准):无损连接性和保持原有的函数依赖

  第七章

  1.简述数据库的设计阶段?(简要回答数据库设计步骤?)((数据库设计有哪几个阶段?)(2012-2013期末,期末2、试题三、五)

  需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施、数据库的运行和维护

  2.数据库设计一般有哪几个过程?每个阶段的中心任务是什么?(数据库设计各阶段设计要点)(2001研招,章节7)

  (1)数据库设计一般包括6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施、数据库的运行和维护

  (2)各阶段任务如下:

  ①需求分析:准确了解和分析用户需求

  ②概念结构设计:对用户需求进行综合、归纳和抽象,形成独立于具体的DBMS和机器的概念模型

  ③逻辑结构设计:将概念结构设计阶段设计好的ER图转换为某个DBMS 所支持的数据模型,并对其进行优化

  步骤

  ①将概念结构转换为一般的关系、网状、层次模型

  ②将关系、网状、层次模型转换为DBMS支持的数据模型

  ③对数据模型进行优化

  ④物理结构设计:为逻辑数据模型选取一个最适合应用环境的物理结构

  步骤

  ① 确定数据库的物理结构,主要是存取方法和存储结构

  ② 对物理结构进行评价,评价的重点是时间和空间效率

  ⑤数据库的实施:设计人员运用DBMS提供的数据语言、工具、及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制和调试应用程序,组织数据入库,并进行试运行。(选择)

  ⑥数据库的运行和维护:在数据库运行过程中对其进行评价、调整和修改

  注:

  需求分析和概念设计独立于数据库管理系统

  逻辑设计和物理设计依赖于数据库管理系统

  3.数据字典的内容和作用(章节一、2003期末)

  数据字典:是数据库中各种描述信息和控制信息的集合,是数据库设计的有力工具,是元数据,而不是数据本身

  基本内容:

  数据项、数据结构、数据流、数据存储、处理过程5个部分

  数据项是数据的最小组成单位,若干个数据项组成一个数据结构。

  数据字典是通过数据项和数据结构的定义来描述数据流、数据存储的逻辑内容

  作用:在需求分析阶段建立,是下一步进行概念结构设计的基础,并在数据库设计阶段不断修改、补充、完善。

  数据流程图(DFD)是为了描述结构化方法中需求分析阶段的工具。(选择)

  4.什么是数据库的概念结构?试述概念结构的特点和设计策略

  概念结构是信息世界的结构,即概念模型

  概念结构的特点:

  (1)比较真实的反映现实世界

  (2)易于理解,与用户之间交流意见的工具

  (3)易于更改,当环境变化时,容易对模型进行修改和扩充

  (4)易于向关系、网状、层次等各种数据模型转换

  设计策略:

  自顶向下:(先定义全局,再逐步细化)

  自底向上:先定义局部,再集成起来,得到全局结构

  逐步扩张:先定义核心,在向外扩充

  混合策略:将自顶向下和自底向上相结合,先定义全局,以他为骨架再自底向上设计局部概念结构

  5.数据库的运行和维护的内容?

  (1)数据库的转储和恢复

  (2)数据库的重组和重构

  (3)数据库性能的监视、分析和改造

  (4)数据库的安全性、完整性控制

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

  (1)在需求分析,用数据依赖的概念分析和表示各个数据项之间的联系。

  (2)在概念结构设计阶段,以规范化理论为工具来构造实体类型和联系类型,设计ER模型并对其进行优化。

  (3)在逻辑设计阶段,以规范化理论来设计和评价模式

  7.数据库中常见的存取方法(关系模式的存取方法)

  索引方法、聚簇方法、HASH方法

  (索引b+索引,hash索引是数据库中最经典的存取方法)

  8.试述数据库设计过程中形成的数据库模式(课后题、选择题)

  (1)在概念结构设计阶段形成独立于机器特点、独立于DBMS的概念模型,即ER图(选择)

  (2)在逻辑结构设计阶段将ER 图装变为具体的数据库支持的数据模型,形成数据库逻辑模式(基本表),然后在基本表的基础上建立视图,形成数据的外模式

  (3)在物理结构阶段,进行物理存储安排,建立索引,形成数据库的内模式

  9.将ER图转换为关系模式时规则,如何处理实体型间的联系

  (1)一个1:1的联系可以转换为一个独立的关系模式(两边的码+联系的属性,其中候选码为每个实体的码①②),也可以与任意一端对应的关系模式合并

  (2)一个1:n的联系可以转换为一个独立的关系模式(两边的码+联系的属性,其中候选码为n端实体码)也可以与n端对应的关系模式合并

  (3)一个m:n的联系可以转换为一个独立的关系模式(两边的码+联系的属性,其中候选码为两端实体码的组合)

  (4)三个或三个以上实体间的一个多元联系可以转换为一个关系模式

  (5)具有相同码的关系模式可合并。

  (6)一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。

  第八章

  1.简述使用游标的步骤?(2012-2013期末、期末二)

  定义游标、打开游标、推进游标、关闭游标

  第九章

  1.查询处理步骤

  **查询处理分为:**查询分析、查询检查、查询优化、查询执行

  2.关系系统查询优化的一般策略(准则)(查询树的启发式优化规则)

  (1)选择运算应尽可能的先做

  (2)把投影运算和选择运算同时进行

  (3)把投影同其前后的双目运算结合起来进行运算

  (4)把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算

  (5)找出公共子表达式

  (6)选择合适的连接运算

  3.查询优化的一般步骤

  (1)把查询转化成语法树

  (2)把语法树利用优化算法换成标准的形式

  (3)选择低层的存取路径

  (4)生成查询计划,选择代价最小的

  第十章

  1.数据库系统的故障有哪些类型?(试题二、2012-2013期末、期末二)

  (1)事务故障

  (2)系统故障

  (3)介质故障

  (4)计算机病毒

  2.数据库恢复:把数据库从错误状态恢复到某一已知的正确状态

  3.事务可能遭到破坏的因素有:多事务并行,交叉执行,强行停止

  4.简述事务故障的恢复策略(2018、2020研招)

  (1)反向扫描日志文件,查找该事务的更新操作。

  (2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。

  (3)继续反向扫描日志文件,查找该事务更新操作,并做同样处理。

  (4)如此处理下去,直到读到此事务的开始标记,事务故障恢复就完成了。

  5.简述系统故障时的数据库恢复策略。(试题五、六、课后题、2015、2016、2018、2020研招)

  (系统故障时的恢复)

  (1)正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入REDO队列(重做队列)。同时找出故障发生时尚未完成的事务,将其事务标识记入UNDO队列(撤销队列)。

  (2)对UNDO队列(撤销队列)中的各个事务进行撤销处理

  (3)对REDO队列(重做队列)中的事务进行重做处理

  UNDO反向扫描日志文件,撤销对数据库的更新,使得数据库恢复到更新前状态

  REDO正向扫描日志文件,重做一次更新,使得数据库恢复到更新后的状态

  6.简述介质故障的恢复策略。(2017、2018、2020研招)

  (1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。对于动态转储的数据库后备副本,还要转入日志文件副本,利用REDO+UNDO.才能使数据库恢复到以一致性状态。

  (2)装入相应的日志文件副本,重做已完成的事务。

  7.什么是事务(事务的概念)?事务具有哪些特性?定义事务的语句有哪些?(试题五、课后题、2012-2013期末、章节10、期末二)

  事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务是并发控制的基本单位。

  事务具有原子性、一致性、隔离性、持续性四个特性。

  开始Begin transaction;

  结束commit(提交); rollback(回滚:撤销到事务最开始的状态);

  8.简述(试述)事务的特性。恢复技术能保证事务的哪些特性?(试题四、六、课后题、2005研招,章节10)

  事务具有四个特性,即ACID特性:

  (1)原子性:事务中包括的所有操作要么都做,要么都不做。

  (2)一致性:事务必须使数据库从一个一致性状态变到另一个一致性状态。

  (3)隔离性:一个事物的执行不能被其他事务干扰。

  (4)持续性:(永久性)事务一旦提交,对数据库的改变是永久性的。

  故障恢复可以保证事务的原子性和持续性

  并发控制可以保证事务的一致性和隔离性

  9.事务中的提交和回滚是什么意思?(章节10)

  提交(commit):提交事务的所有操作。将事务中所有对数据库的更新写回到磁盘上的物理数据库中,事务正常结束。

  回滚(rollback):是数据库滚回到事务开始时的状态。在事务运行的过程中发生了某种故障,事务不能再继续执行,系统将事务对数据库的所有已完成的更新操作全部撤销,使数据回滚到事务最开始的状态。

  10.数据库恢复的基本技术有哪些?恢复的原理(2020)

  **恢复基本原理:**冗余 建立冗余数据最常用的技术是数据转储和登记日志文件

  数据库恢复的基本技术

  (1)数据转储:海量转储、增量转储

  (2)登录日志文件

  当故障发生的时候,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前某一一致性状态

  11.什么是日志文件?为什么要设立日志文件?(章节10)

  日志文件:用来记录事务对数据库更新操作的文件

  设立日志文件的目的:记录对数据库中数据的每一步更新操作。从而DBMS可以根据日志文件进行事务故障恢复和系统故障恢复(事务未完成);还可协助后备副本进行介质故障的恢复。

  12.登录日志文件时必须遵循什么原则?(试题一)

  (1)登记的次序严格按并发事务执行的时间次序。

  (2)必须先写日志文件,后写数据库。

  13.登录日志文件时为什么是先写日志文件,后写数据库?

  (1)因为如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了

  (2)但是若是先写日志文件,但是没有修改数据库,在恢复时只不多多一次执行UNDO操作,但是不会影响数据库的正确性。所以…

  14.数据转储的意义

  数据转储是数据库恢复中采用的技术,即DBA定期的将数据库复制到磁带或另一个磁盘上保存起来的过程,当数据库遭到破坏的时候可以将后备副本重新装入,将数据恢复到转储时的状态。

  静态转储:在系统中无运行事务时进行的转储操作

  动态转储:指的是转储期间允许对数据库进行存取或修改

  海量转储:每次转储全部数据库

  增量转储:每次只转储上一次转储后的更新过的数据

  注:简述事务的概念及性质。要把3、4条均答上

  第十一章

  1.什么是封锁?基本的封锁类型有几种?叙述他们的含义。(课后题、章节11、2005研招、)

  封锁就是事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁,在事务T释放他的锁之前,其他的事务不能更新或读此数据对象。

  注:封锁是并发控制的一个重要技术

  基本的封锁类型有两种:排他锁、共享锁

  **排他锁:**又称写锁,事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务不能再对A加任何类型的锁,直到T释放A上的锁。

  **共享锁:**又称读锁,事务T 对数据对象A加上S锁,则事务T可以读A 但不能修改A,其他的事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。

  2.并发操作可能会产生哪几类数据不一致?用什么方法可以避免各种数据不一致的情况?(课后题、期末二、试题五、2012-2013期末)

  (简述数据库并发操作通常带来哪些问题)

  丢失修改、不可重复读、读“脏”数据

  避免不一致的方法和技术:并发控制。

  丢失修改:T1和T2读入同一数据并修改。T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失

  不可重复读:T1读取数据,事务T2执行更新操作,使得T1无法再现更新前的操作

  读脏数据:T1修改数据并写回磁盘,T2读取同一数据,然后由于某种原因,T1撤销操作,使得T1恢复到原值,所以T2读到的数据与数据库中的不一致。

  **○常用的并发控制技术:**封锁、时间戳、乐观控制法、多版本并发控制等(2020)

  为什么要并发控制?

  因为数据库中可能会存在数据不一致问题,并发控制可以保证事务的一致性和隔离性。

  3.简述三级封锁协议的内容以及不同级别的封锁协议能解决哪些数据不一致性问题?(课后题、试题三、期末二、2012-2013期末分开考、2015、2017、2018、2020研招)(如何用封锁机制保证数据的一致性)

  **(1)一级封锁协议:**事务T在修改数据R以前必须先对其加X锁,直到事务结束才释放。-----解决了“丢失修改”问题

  **(2)二级封锁协议:**在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加上S锁,读完可释放S锁。-----不仅解决“丢失修改”,还解决了读“脏”数据问题。

  **(3)三级封锁协议:**在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加上S锁,直到事务结束才释放S锁。-----不仅解决“丢失修改”,读“脏”数据问题,还解决了“不可重复读”问题。

  注:若只让简述第三级封锁协议或者第二级封锁协议,则需要将第一封锁协议也要叙述,因为他们均是在第一协议的基础上。

  4.简述两段锁协议(2015研招)

  两段锁协议是指所有事务必须分成两个阶段对数据项加锁和解锁

  第一阶段:获得封锁(扩展阶段) 事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。

  第二阶段:释放封锁(收缩阶段) 事务可以释放任何数据项上的任何类型的锁,但是不能申请任何锁。

  注:遵守两段锁是可串行化调度的充分条件,而不是必要条件。

  5.什么是活锁?叙述活锁产生的原因和解决办法?(章节11)

  **活锁:**该事务等待时间太长,似乎被锁住了,实际上可能被激活。(都在排队等)

  产生的原因:当一系列的封锁不能按照其先后顺序执行时,就可能导致一些事务无限等待某个封锁,从而导致活锁。

  **避免活锁的办法:**先来先服务的策略

  6.什么是死锁?叙述死锁产生的原因和解决办法?(章节11、2016研招)

  **死锁产生的原因:**封锁可以引起死锁

  死锁:T1等待T2,T2等待T1,T1和T2两个事务永远不能结束,形成死锁。

  产生的原因:两个或多个事务都已封锁了一些数据对象,然后请求已被其他事务封锁的数据对象加锁,从而出现死等待。

  预防死锁的办法:

  (1)一次封锁法:(每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行)

  (2)顺序封锁法:(预先对数据对象规定一个封锁顺序,所有事务都按照这个顺序实行封锁)

  诊断死锁的方法:超时法、等待图法

  解决死锁的办法:当死锁发生时,就要选择一个处理死锁代价小的事务,将其撤销,释放此事务所持有的所有的锁,使其他事务得以运行下去。

  (注:答题的时候 解决死锁的常用方法要答三条:预防死锁的办法+解决思索的方法)

  7.什么样的并发调度是正确的调度?

  可串行化的调度是正确的调度

  可串行化的调度定义:多个事务并发执行是正确的,当且仅当其结果与按照某一次序串行执行这事务的结果相同,则称这种调度策略为可串行化的调度。

  8.“串行调度”和“可串行化调度”有何区别

  事务的执行次序叫做调度。

  如果多个事务依次执行,则称为事务的串行调度。

  如果利用分时的方法,同时处理多个事务,则称为事物的并发调度。

  如果要是一个并发调度的结果与某一个串行调度的结果等价,则称该并发调度为可串行化调度。

  11.什么是封锁粒度

  封锁对象的大小叫做封锁粒度,封锁对象可以是一些逻辑单元,也可以是一些物理单元。

  封锁粒度与系统的并发度和并发控制的开销有关:封锁粒度越大,数据库所能够封锁的数据单元越小,并发度也就越小,系统开销也越小;反之越大。




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
上一篇:数据库常见问题详解大全(一)
下一篇:Ubuntu操作系统基础教程
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信
顶部