性值。
3.3 关系模式的非形式化设计准则有哪几条?这些准则对数据库设计有什么帮助?
答:①、尽可能只包含有直接联系的属性,不要包含有间接联系的属性。(把有间接联系的属性包含在一个关系中,肯定会出现数据冗余和操作异常情况)。
②、尽可能使得关系不出现插入、删除、修改等操作异常。如出现异常,则要清楚地加以说明,保证更新数据库的应用程序正确操作。
③、尽可能使关系中避免放置经常为空值的属性。
④、尽可能使关系等值连接在主键和外键上进行,并保证连接后不会产生额外的元组。(如两个关系的连接匹配属性不是主键或外键,就可能产生额外元组)。
3.16 什么是寄生元组?什么是悬挂元组?各是怎么产生的?
答:在泛关系模式分解成数据库模式时,泛关系r在数据库模式中的每一个模式上投影再连接起来,比原关系r多出来的元组是寄生元组。
在无泛关系假设时,对两个关系进行自然连接中被丢失的元组,被称为悬挂元组。 产生原因略。
3.18 试解释数据库“丢失信息”与“未丢失信息”两个概念。有什么区别?
答:分解后是否表示一样的信息,如不一样就是“丢失信息”,否则就是“未丢失信息”。
习题4——关系运算
4.1 名词解释
无限关系——无组数量无限多的关系。
无穷验证——验证一个公式时,必须对关系中所有元组进行验证。
4.13 为什么要对关系代数表达式进行优化?
答:对于等价的关系表达式,因表达式中安排选择、投影、连接的顺序不同而执行效率大为不同。
4.14 有哪三条启发式规则?对优化起什么作用?
答:①、尽可能早地执行选择操作。 ②、尽可能早地执行投影操作。 ③、避免直接做笛卡尔积。
作用:合理安排操作顺序,可以花费较少的时间和空间。
习题5——SQL语言
5.1 名词解释
基本表——是实际存储在数据库中的表。
视图——是由若干基本表和视图构成的表的定义。 实表——(略)。
虚表——在创建一个视图时,只是把视图的定义存储在数据字典中,而不存储视图定义的数据,在用户使用视图时才去求对应的数据。因此,视图被称为“虚表”。
相关子查询—— 连接查询—— 嵌套查询——
导出表——是执行了查询时产生的表。 临时视图——
交互式SQL——SQL语言在终端交互方式下使用,称为交互式SQL。 嵌入式SQL——SQL语言在语言的程序中使用,称为嵌入式SQL。 游标——是一个与某一查询结果相联系的符号名,是一个指针。 卷游标——可推进也可后退的游标。
5.2 试叙述SELECT语句的关系代数特点和元组演算特点。 答:
5.7 预处理方式对于嵌入式SQL的实现有什么重要意义? 答:
5.8 在主语言的程序中使用SQL语句有哪些规定?
答:①、在程序中要区分SQL语句和主语言语句。 ②、允许嵌入的SQL语句引用主语言的程序变量。
③、SQL的集合处理方式与主语言的单记录处理方式之间的协调。
5.9 SQL的集合处理方式和主语言单记录处理方式间如何协调? 答:通过游标机制,将集合操作转换成单记录处理方式。
5.10 嵌入式SQL语句何时不必涉及到游标?何时必须涉及到游标?
答:在执行INSERT、DELETE、UPDATE语句时和已知SELETE语句查询结果肯定是单元组时,可以不涉及游标。
当SELETE语句查询结果为多个元组时必须涉及到游标。
5.12 什么是存储过程?使用存储过程后,系统具有什么特点?
答:存储过程是使用SQL语句和流程控制语句编写的模块,存储过程经编译和优化后存储在数据库服务器端的数据库中,使用时调用即可。
使用存储过程具有以下优点: 1) 提高运行速度;
2) 增强了SQL的功能和灵活性;
3) 可以降低网络的通信量; 4) 减轻了程序编写工作量; 5) 间接实现安全控制功能
5.13 什么是SQL/PSM?这个标准中有哪些流程控制语句?
答:SQL/PSM是SQL标准的一部分,它指定了如何编写持久存储模块,提供流程控制语句来表示过程处理的应用逻辑。
有三种流程控制语句:顺序执行、条件分支语句、循环语句。
习题6——数据库管理
6.1 名词解释
事务——是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。不论发生何种情况,DBS必须保证事务能正确、完整地执行。
数据库的一致性——事务运行结果必须保证数据库从一个一致性状态进入另一个一致性状态。
数据库的可恢复性——DBMS系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态的能力。
并发操作——多个事务同时对同一数据进行操作。
封锁——是一个与数据项有关的变量,相对于该数据项上可能的操作而言,锁描述了该数据项的状态。
X锁——排它型封锁。如果事务T对某个数据R实现了X锁,那么在T对R解锁前,不允许其它事务对R加任何类型的锁。
S锁——共享型封锁。如果事务T对某个数据R实现了S锁,仍允许其它事务对R加S锁,但R的所有S锁解除前,不允许任何事务对R加X锁。
调度——事务的执行次序。
串行调度——多个事务依次执行。
并发调度——利用分时的特点,同时处理多个事务。
可串行化调度——在每个事务在各种调度中语句的先后顺序不变的情况下,如果一个并发调度的执行结果与某一串行调度的执行结果等价,则这个并发调度称为可串行化调度。否则是不可串行化调度。
6.2 事务的COMMIT语句和ROLLBACK语句各做什么事情?
答:COMMIT语句提交事务对数据库的所有更新并释放X锁;
ROLLBACK语句撤销事务对数据库的所有更新,使数据库恢复到事务执行前的状态,并释放X锁。
6.3 试述事务的四个性质,并说明每一个性质由DBMS的哪个子系统实现?每一个性质对DBS有什么益处?
答:事务的四个性质ACID:
原子性:一个事务对数据库的所有操作,是一个不可分隔的工作单元。不会因事务交叉执行造成数据库的错误。
一致性:一个事务独立执行的结果,就保证数据库的一致性。数据不会因事务的执行而遭受破坏。
隔离性:多个事务并发执行时,系统保证这些事务先后单独执行时的结果一样。
持久性:一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。
6.4 典型的数据库恢复策略是什么?
答:P154(略)。