1. 简述文件系统和数据库系统之间的区别和联系
2.简述何时需要建立聚簇索引,以及它的优缺点。
如果经常需要按照某搜索码(在文件中查找记录的属性或属性集)做查找或者排序操作,可在该搜索码上建立聚簇索引,使得数据文件的记录顺序按照搜索码的顺序排序。
优点:利用搜索码上的聚簇索引,可以基于搜索码属性做高效的查找和排序操作;聚簇索引可以采用稀疏方式存储,节省索引的存储成本。
缺点:聚簇索引要求数据文件的记录顺序按照搜索码的顺序排序,因而在一个关系上只能建立一个聚簇索引。如果基于非聚簇索引(辅助索引)的搜索码进行查找操作,成本会相对高一些。
3.在嵌入式 SQL中,什么情况下的 DML 语句不必涉及到游标操作?
INSERT、DELETE 和 UPDATE 语句; 对于 SELECT 语句,如果已知查询结果肯定是单值时。
4.试述 ER 模型、层次模型、网状模型、关系模型和面向对象模型的主要特点?
ER 模型直接表示实体类型及实体间联系,与计算机系统无关,充分反映用户的需求,用户容易理解。
层次模型的数据结构为树结构,记录之间联系通过指针实现,查询较快,但DML属于过程化的,操作复杂。
网状模型的数据结构为有向图,记录之间联系通过指针实现,查询较快,并且容易实现 M:N 联系,但 DML 属于过程化的语言,编程较复杂。
关系模型的数据结构为二维表格,容易为初学者理解。记录之间联系通过关键码实现。 DML 属于非过程化语言,编程较简单。
面向对象模型能完整描述现实世界的数据结构,具有丰富的表达能力,能表达嵌套、递归的数据结构。但涉及的知识面较广,用户较难理解。
5.弱实体集:
如果一个实体集的所有属性都不足以形成主码,则称这样的实体集为弱实体集。
每个弱实体集必须与一个实体集关联才能有意义。
6.DBMS:
数据库管理系统由一个相互关联的数据的集合和一组用以访问这些数据的应用程序组成;是位于用户与操作系统之间的一层数据管理软件。
功能:
- 数据定义
- 数据操纵
- 数据库运行管理
- 数据库建立和维护
7.你是如何理解空值(NULL)的?
空值就是表示“无意义”,当实体在某个属性上没有值时设为 null;或者表示“值未知”,即值存在,但目前没有获得该信息。
当空值参与运算,结果为空值,参与比较运算时结果为unknown。
8.简述函数依赖与多值依赖的联系与区别?
函数依赖规定某些元组不能出现在关系中,也称为相等产生依赖;多值依赖要求某种形式的其它元组必须在关系中,称为元组产生依赖。
X→Y 的有效性仅决定于 X、Y 属性集上的值;X→→Y 的有效性与属性集范围有关。
9.简述串行调度与可串行化调度的区别?
如果多个事务依次执行,则称事务串行调度。
如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。
如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。
10.事务什么?事务 ACID 特性分别是什么?每个特性的用途是什么?
事务:是由一系列操作构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
原子性(Atomicity): 事务中包含的所有操作要么全做,要么全不做。
一致性(Consistency): 事务的隔离执行必须保证数据库的一致性。
隔离性(Isolation): 系统必须保证事务不受其它并发执行事务的影响。
持久性(Durability): 一个事务一旦提交之后,它对数据库的影响必须是永久的。
11.死锁的发生是坏事还是好事?试说明理由。如何解除死锁状态?
死锁是指在事务执行时,两个或多个事务互相等待形成一个环
答:在 DBS 运行时,死锁状态是我们不希望发生的,因此死锁的发生本身是一件坏事。但如果我们不让死锁发生,让事务任意并发做下去,那么有可能破坏 DB中数据,或用户读了错误的数据。从这个意义上讲,死锁的发生是一件好事,能防止错误的发生。
在发生死锁后,系统的死锁处理机制和恢复程序就能起作用,抽取某个事务作为牺牲品,把它撤消,做 ROLLBACK 操作,使系统有可能摆脱死锁状态,继续运行下去。
评分细则: 好坏 1 分,理由 1 分,解除死锁 3 分
12.举例说明参照完整性对数据有什么要求。
答:若属性或属性组F是关系R的外码,且它与关系S的主码K相对应,则R中每个元组在F上的值必须为:
①等于S中某元组的主码值。 ②或者取空值。
13.简述数据库系统三级模式结构及其同数据独立性之间的关系。
答:说出三级模式、两级映像+数据独立性(物理独立性,逻辑独立性)即可。
数据独立性是指应用程序和数据之间互相独立、互不影响,即数据结构的修改不会影响应用程序发生变化。由数据库的三层模式两层映像实现。
为了提高数据的物理独立性和逻辑独立性,使数据库的用户观点,即用户看到的数据库,与数据库的物理方面,即实际存储的数据库区分开来,数据库系统的模式是分级的,美国数据系统语言协商会提出模式、外模式、存储模式三级模式的概念。
与独立性的联系:三级模式之间有两级映象。
数据库的三级视图实现了数据独立性:
- 物理数据独立性:物理模式的改编而不会影响逻辑模式。当物理模式改变时,修改模式/内模式映像,使外模式保持不变,从而应用程序可以保持不变。
- 逻辑数据独立性:当模式改变时,修改外模式/模式映像,使外模式保持不变,从而应用程序可以保持不变,成为数据的逻辑独立性。
14.动态SQL与嵌入式SQL:
动态sql:通用程序设计语言可以通过函数或者方法来连接数据库服务器并与之交互。利用动态sql可以在运行时以字符串形式构建sql查询,提交查询,然后把结果存入程序变量中,每次一个元组。动态sql的sql组件允许程序在运行时构建和提交sql查询。
嵌入式sql:提供了另外一种使程序与数据库服务器交互的手段。嵌入式SQL必须在编译时全部确定,并交给预处理器。预处理程序提交sql语句到数据库系统进行编译和优化,然后将sql语句替换成相应代码和函数,最后调用程序语言的编译器进行编译
15.索引
索引是一个单独的、物理的数据库结构,提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。
索引优点:
第一 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二, 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
第三, 可以加速表和表之间的连接。
第四, 在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
第五, 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。
16.两阶段封锁协议
可以保证冲突可串行化。
增长阶段:事物可以获得封锁,不能释放锁;
缩减阶段:事物可以释放锁,但不能获得新锁。
17.什么是函数依赖?
18.什么是多值依赖?
19.什么是无关属性?答:无关属性定义+判定方法
20.简述数据库管理员的职责;
答:
(1)模式定义:DBA通过用DDL书写的一系列定义来创造最初的数据库模式。
(2)存储结构及存取方式定义。
(3)模式及物理组织的修改:由DBA对模式及物理组织进行修改,以反映组织的需求变化,或者为提高性能选择不同的物理组织;
(4)数据访问授权:通过授予不同的权限,DBA可以规定不同的用户各自可以访问的数据库的部分;
(5)日常维护:定期备份数据库、确保正常运转时所需的空余磁盘空间、监视数据库的运行。
21.什么是“饿死”问题?如何解决?
有可能存在一个事务序列,其中每个事务都申请对某数据项加S锁,且每个事务在授权加锁后一小段时内释放封锁,此时若另有一个事务T1欲在该数据项上加X锁,则将永远轮不上封锁的机会。这种现象称为“饿死”(starvation)。
当事务T中请对数据项Q加S锁时,授权加锁的条件是:
(1)不存在在数据项Q上持有X锁的其他事务;
(2)不存在等待对数据项Q加锁且先于T申请加锁的事务。
22.画出事务状态图
23.视图
比较:
视图(view) vs 表(table) ?
相同点:视图和表都是关系,都可在sql 中直接应用,用来查询。
查询时能用表的地方都能用视图。
不同点:
1.DB 中存储表的模式定义和数据,但只存储视图的定义,不存视图的数据。
2.视图数据在使用视图时临时计算
3.当表的内容发生变化时,视图的内容也发生变化。
4.物化视图用于存放从视图中查询获得的结果,是提高计算的一种手段,结果等价于临时计算。
视图的作用:
(1)视图能够简化用户的操作。(1分)
(2)视图使用户能以多种角度看待同一数据。(1分)
(3)视图对重构数据库提供了一定程度的逻辑独立性。(1分)
(4)视图能够对机密数据提供安全保护。(1分)
(5)可以更清晰的表达查询。
24.数据、数据库、数据库管理系统、数据库系统的概念?
25.数据库故障类型和破坏程度?
DBS 中DB 的故障主要有三类:事务故障、系统故障和磁盘故障。前两类故障未破坏DB,但使其中某些数据变得不正确;磁盘故障将破坏DB。
26.数据模型的三大要素是什么?
数据操作,数据结构,完整性约束。
27.数据库设计的基本步骤是什么?
需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库运行和维护
28.简述数据库并发操作通常会带来哪些问题
更新丢失,不可重复读,脏读,幻读。
29.简述时间戳排序协议。
时间戳排序协议:保证任何有冲突的read或write操作按时间戳顺序执行
- 假设事务Ti发出read(Q)
如果TS(Ti)< W-timestamp(Q),则Ti需读入的Q值已被覆盖。因此,read操作被拒绝,Ti回滚;
如果TS(Ti)>= W-timestamp(Q),则执行read操作,R-timestamp(Q)被设为R-timestamp(Q)和TS(Ti)两者的最大值。
- 假设事务Ti发出write(Q)
如果TS(Ti)< R-timestamp(Q),则Ti产生的Q值是先前所需要的值,且系统已假定该值不会被产生。因此,write操作被拒绝,Ti回滚;
如果TS(Ti)< W-timestamp(Q),则Ti试图写入的Q值已过时。因此,write操作被拒绝,Ti回滚;
否则,执行write操作,将W-timestamp(Q)设为TS(Ti)
30.关系中的元组有先后顺序吗?为什么?
答:没有。 关系是元组的集合, 而集合中的元素是没有顺序的,因此关系中的元组也就
没有先后顺序。
31.关系模式和关系实例的区别。
答:关系模式是关系的描述,包括关系名R,关系属性名U,属性组U中属性的域,属性向域的映像dom,属性间的数据依赖关系F等。关系模式是型,关系是具体的值,二者是型与值的关系。
32.可以接受的分解必须是无损分解吗?
- 泛关系存在问题,因此进行模式分解;
- 如果分解有损,即分解后的模式不能有效表示泛关系原来含有的全部信息,那么分解没有价值,有损分解是不可实际接受的。
32.简述系统故障时的数据库恢复策略。
//待补充
33.为什么使用延迟修改的日志记录不需要记录数据的旧值?
在事务提交时才修改数据库的执行
34.数据项Q的W-timestamp(Q)=R-timestamp(Q)=20,现有事务Ta和事务Tb,TS(Ta)=30,TS(Tb)=34,Tb先执行read(Q),Ta再执行Read(Q),问最后R-timestamp(Q)为多少,为什么
答:Tb执行read(Q), TS(Tb)不小于 W-timestamp(Q) ,因此可以正常执行, R-timestamp(Q)更新值为34
Ta执行read(Q), TS(Ta) > W-timestamp(Q),因此可以正常执行,R-timestamp(Q) = max(R-timestamp(Q), TS(Ta) ) = 34
所以最后R-timestamp(Q)为34