资源描述
数据库原理第二学期习题解答(常用版)
(可以直接使用,可编辑 完整版资料,欢迎下载)
<数据库原理二>参考习题解答
上海大学 董健全
5.2 设关系模式R有n个属性,在模式R上可能成立的函数依赖有多少个?其中平凡的FD有多少个?非平凡的FD有多少个?
解:这个问题是排列组合问题。FD形为X®Y,从n个属性值中选择属性组成X共有C+C+ … +C=2n种方法;同理,组成Y也有2n种方法。因此组成X®Y形式应该有2n·2n=4n种方法。即可能成立的FD有4n个。
平凡的FD要求YÍX,组合X®Y形式的选择有:
C·C+C·(C+C)+C·(C+C+C)+ … +C(C+C+ … C)=C·20+C·21+C·22+ … +C·2n=(1+2)n=3n
即平凡的FD有3n。因而非平凡的FD有4n-3n个。
5.3 对函数依赖X→Y的定义加以扩充,X和Y可以为空属性集,用φ表示,那么X→φ,φ→Y,φ→φ的含义是什么?
答:据推理规则的自反律可知,X®φ和φ®φ是平凡的FD,总是成立的。
而φ®Y表示在当前关系中,任意两个元组的Y值相等,也就是当前关系的Y值都相等。
5.4 已知关系模式R(ABC),F是R上成立的FD集,F={ A→B,B→C },试写出F的闭包F+。
解:据已知条件和推理规则,可知F+有43个FD:
A®φ AB®φ AC®φ ABC®φ B®φ C®φ
A®A AB®A AC®A ABC®A B®B C®C
A®B AB®B AC®B ABC®B B®C φ®φ
A®C AB®C AC®C ABC®C B®BC
A®AB AB®AB AC®AB ABC®AB BC®ф
A®AC AB®AC AC®AC ABC®AC BC®B
A®BC AB®BC AC®BC ABC®BC BC®C
A®ABC AB®ABC AC®ABC ABC®ABC BC®BC
5.5 设关系模式R(ABCD),如果规定,关系中B值与D值之间是一对多联系,A值与C 值之间是一对一联系。试写出相应的函数依赖。
解:从B值与D值之间有一对多联系,可写出函数依赖D®B,从A值与C值之间是一对一联系。可写出函数依赖A®C和C®A。
5.6试举出反例说明下列规则不成立:
① { A→B }⊨{ B→A }
② { AB→C,A→C }⊨{ B→C }
③ { AB→C }⊨{ A→C }
答:设有三个关系:
r1 A B r2 A B C r3 A B C
1 1 2 1 2 1 2 3
2 1 2 2 2 1 3 4
3 2 3
(1)在关系r1中,A→B成立,但B→A不成立。
(2)在关系r2中,AB→C和A→C成立,但B→C不成立
(3)在关系r3中,AB→C成立,但A→C不成立。
5.7 设关系模式R(ABCD),F是R上成立的FD集,F={ A→B,C→B },则相对于F,试写出关系模式R的关键码。并说明理由。
解:R的关键码为ACD。因为从已知的F,只能推出ACD→ABCD。
5.8 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C},
① 试写出属性集BD的闭包(BD)+。
② 试写出所有左部是B的函数依赖(即形为“B→?”)。
解:①从已知的F,可推出BD→BCD,所以(BD)+=BCD。
②由于B+=BC,因此左部是B的FD有四个:
B→φ,B→B,B→C,B→BC。
5.9设关系模式R(ABC)分解成ρ={ AB,BC },如果R上的FD集F={ A→B },那么这个分解是损失分解。试举出R的一个关系r,不满足mρ(r)=r。
解:这个反例r可以举测试时的初始表格:
A B C
AB a1 a2 b13
BC b21 a2 a3
πAB(r)⋈πBC(r)有四个元组:
A B C
a1 a2 b13
a1 a2 a3
b21 a2 b13
b21 a2 a3
即mρ(r)≠r。
5.10试解释数据库“丢失信息”与“未丢失信息”两个概念。“丢失信息”与“丢失数据”有什么区别?
答:数据库中丢失信息是指r≠mρ(r),未丢失信息是指r=mρ(r)。
丢失信息是指不能辨别元组的真伪,而丢失数据是指丢失元组。
5.11设关系模式R(ABC),F是R上成立的FD集,F={ A→C,B→C },试分别求F在模式AB和AC上的投影。
答:πAB(F)=φ(即不存在非平凡的FD)
πAC(F)={ A→C }
5.12设关系模式R(ABC),F是R上成立的FD集,F={ B→A,C→A },ρ={ AB,BC }是R上的一个分解,那么分解ρ是否保持FD集F?并说明理由。
答:已知F={ B→A,C→A },而πAB(F)={ B→A },πBC(F)=φ,
显然,分解ρ丢失了FD C→A。
5.13设关系模式R(ABC),F是R上成立的FD集,F={ B→C,C→A },那么分解ρ={ AB,AC }相对于F,是否无损分解和保持FD?并说明理由。
答:①已知F={ B→C,C→A },
而πAB(F)=φ,πAC(F)={ C→A }
显然,这个分解丢失了FD B→C
② 用测试过程可以知道,ρ相对于F是损失分解。
5.14设关系模式R(ABCD),F是R上成立的FD集,F={ A→B,B→C,A→D,D→C },ρ={ AB,AC,BD }是R的一个分解。
① 相对于F,ρ是无损分解吗?为什么?
② 试求F在ρ的每个模式上的投影。
③ ρ保持F吗?为什么?
答:①用测试过程可以知道,ρ相对于F是损失分解。
②πAB(F)={ A→B },πAC(F)={ A→C },πBD(F)=φ。
③显然,分解ρ不保持FD集F,丢失了B→C、A→D和D→C等三个FD。
5.15设关系模式R(ABCD),R上的FD集F={ A→C,D→C,BD→A},试说明ρ={ AB,ACD,BCD }相对于F是损失分解的理由。
答:据已知的F集,不可能把初始表格修改为有一个全a行的表格,因此ρ相对于F是损失分解。
5.16设关系模式R(ABCD),F是R上成立的FD集,F={ AB→CD,A→D }。
① 试说明R不是2NF模式的理由。
② 试把R分解成2NF模式集。
答:①从已知FD集F,可知R的候选键是AB。
另外,AB→D是一个局部依赖,因此R不是2NF模式。
③ 此时R应分解成ρ={ AD,ABC },ρ是2NF模式集。
5.17设关系模式R(ABC),F是R上成立的FD集,F={ C→B,B→A }。
① 试说明R不是3NF模式的理由。
② 试把R分解成3NF模式集。
答:①从已知FD集F,可知R的候选键是C。
从C→B和B→A,可知C→A是一个传递依赖,因此R不是3NF模式。
③ 此时R应分解成ρ={ CB,BA },ρ是3NF模式集。
5.18设有一个记录各个球队队员每场比赛进球数的关系模式
R(队员编号,比赛场次,进球数,球队名,队长名)
如果规定每个队员只能属于一个球队,每个球队只有一个队长。
① 试写出关系模式R的基本FD和关键码。
② 说明R不是2NF模式的理由,并把R分解成2NF模式集。
③ 进而把R分解成3NF模式集,并说明理由。
解:(1)根据每个队员只能属于一个球队,可写出FD:队员编号→球队名
根据每个球队只有一个队长,可写出FD:球队名→队长名
“每个队员每场比赛只有一个进球数”,这条规则也是成立的。因此还可写出FD:
(队员编号,比赛场次)→进球数
R的关键码为(队员编号,比赛场次)。
(2)R中存在这样的FD:
(队员编号,比赛场次)→(球队名,队长名)
队员编号 →(球队名,队长名)
可见前一个FD是局部依赖,所以R不是2NF模式。
R应分解成R1(队员编号,球队名,队长名)
R2(队员编号,比赛场次,进球数)
此处,R1和R2都是2NF模式。
(3)R2已是3NF模式。
在R1(队员编号,球队名,队长名)中,存在两个FD:
队员编号 → 球队名
球队名 → 队长名
关键码为队员编号,存在传递依赖,因此R1不是3NF模式。
R1应分解成R11(队员编号,球队名)
R12(球队名,队长名)
这两个模式都是3NF模式。
因此,R分解成3NF模式集时,ρ= { R11,R12,R2 }。
5.19设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。
如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理。
试回答下列问题:
(1)根据上述规定,写出模式R的基本FD和关键码;
(2)说明R不是2NF的理由,并把R分解成2NF模式集;
(3)进而分解成3NF模式集。
解:(1)基本的FD有三个:
(职工编号,日期)→ 日营业额
职工编号 → 部门名
部门名 → 部门经理
R的关键码为(职工编号,日期)。
(2)R中有两个这样的FD:
(职工编号,日期)→(部门名,部门经理)
职工编号 → (部门名,部门经理)
可见前一个FD是局部依赖,所以R不是2NF模式。
R应分解成R1(职工编号,部门名,部门经理)
R2(职工编号,日期,日营业额)
此处,R1和R2都是2NF模式。
(3)R2已是3NF模式。
在R1中,存在两个FD:职工编号 → 部门名
部门名 → 部门经理
因此,“职工编号 → 部门经理”是一个传递依赖,R1不是3NF模式。
R1应分解成R11(职工编号,部门名)
R12(部门名,部门经理)
这样,ρ= { R11,R12,R2 }是一个3NF模式集。
5.20设关系模式R(ABC)上有一个MVD A→→B。如果已知R的当前关系存在三个元组(ab1c1)、(ab2c2)和(ab3c3),那么这个关系中至少还应该存在哪些元组?
解:这个关系中至少还应存在下面6个元组:(ab1c2),(ab2c1),(ab1c3),(ab3c1),(ab2c3),(ab3c2)。
7.2 数据库系统的生存期分成哪几个阶段?数据库结构的设计在生存期中的地位如何?
答:对DBS生存期的划分,一般分为七个阶段,即规划、需求分析、概念设计、逻辑设计、物理设计、实现和运行维护。
DB结构设计的任务就是把概念设计阶段设计好的基本ER图转换成与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构。
7.4基于数据库系统生存期的数据库设计分成哪几个阶段?
答:基于DBS生存期的DBD分成以下五个阶段:
规划;需求描述和分析;概念设计;逻辑设计;物理设计。
7.5 数据库设计的规划阶段应做哪些事情?
答:DBD中规划阶段的主要任务是进行建立DB的必要性及可行性分析,确定DBS在组织中和信息系统中的地位,以及各个DB之间的联系。
7.6 数据库设计的需求分析阶段是如何实现的?目标是什么?
答:需求分析阶段的工作由下面四步组成:
·分析用户活动,产生用户活动图;
·确定系统范围,产生系统范围图;
·分析用户活动所涉及的数据,产生数据流图;
·分析系统数据,产生数据字典。
需求分析阶段的目标是对系统的整个应用情况作全面的、详细的调查,确定企业组织的目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求;并把这些要求写成用户和数据库设计者都能接受的文档。
7.10概念设计的具体步骤是什么?
答:概念设计的主要步走可分为三步:
(1) 进行数据抽象,设计局部概念模式;
(2) 将局部概念模式综合成全局概念模式;
(3) 评审。
7.13逻辑设计的目的是什么?
答:逻辑设计的目的是把概念设计阶段设计好的基本ER图转换成与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(包括数据库模式和外模式)。这些模式在功能、性能、完整性和一致性约束及数据库的可扩充性等方面均应满足用户的各种要求。
7.14试述逻辑设计阶段的主要步骤及内容。
答:逻辑设计阶段主要有五步:形成初始模式,设计子模式,设计应用程序梗概,评价模式和修改模式。
7.15规范化理论对数据库设计有什么指导意义?
答:规范化理论是数据库设计的指南和工具.具体地讲可在以下三个方面起重要作用:
(1) 在数据库分析阶段用数据依赖的概念来分析和表示各数据项之间的联系;
(2) 在概念设计阶段,用规范化理论消除初步ER图中冗余的联系;
(3)在ER图向关系模型转换过程中,用模式分解的概念和算法指导设计.
7.16 什么是数据库结构的物理设计?试述其具体步骤。
答:对于给定的基本数据模型选取一个最适合应用环境的物理结构的过程,称为DB的物理设计。 物理设计有五步:确定DB的存储记录结构;确定数据存储按排;存取方法的设计;完整性和安全性的设计;应用程序设计。
7.17 数据库实现阶段主要做哪几件事情?
答:数据库实现阶段主要有以下三项工作:
建立实际DB结构;装入试验数据调试应用程序;装入实际数据进入试运行状态。
7.18 数据库系统投入运行后,有哪些维护工作?
答:DBS投入运行以后,就进入运行维护阶段。其主要工作有四项:
维护DB的安全性与完整性及系统的转储和恢复;
DB性能的监督、分析与改进;
增加DB新功能;
改正运行中发现的系统错误。
8.2 试叙述事务的四个性质,并解释每一个性质由DBMS的哪个子系统实现?每一个性质对DBS有什么益处?
答:① 事务的原子性,是指一个事务对DB的所有操作,是一个不可分割的工作单元。原子性是由DBMS的事务管理子系统实现的。事务的原子性保证了DBS的完整性。
② 事务的一致性,是指数据不会因事务的执行而遭受破坏。事务的一致性是由DBMS的完整性子系统实现的。事务的一致性保证数据库的完整性。
③ 事务的隔离性,是指事务的并发执行与这些事务单独执行时结果一样。事务的隔离性是由DBMS的并发控制子系统实现的。隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。
④ 事务的持久性,是指事务对DB的更新应永久地反映在DB中。持久性是由DBMS的恢复管理子系统实现的。持久性能保证DB具有可恢复性。
8.3事务的COMMIT语句和ROLLBACK语句各做什么事情?
答:COMMIT语句表示事务执行成功地结束(提交),此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。
ROLLBACK语句表示事务执行不成功地结束(应该“回退”),此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。
8.5“检查点机制”的主要思想是什么?COMMIT语句与检查点时刻的操作如何协调?
答:“检查点机制”的主要思想是在检查点时刻才真正做到把对DB的修改写到磁盘。在DB恢复时,只有那些在最后一个检查点到故障点之间还在执行的事务才需要恢复。
事务在COMMIT时,事务对DB的更新已提交,但对DB的更新可能还留在内存的缓冲区,在检查点时刻才真正写到磁盘。因此事务的真正结束是在COMMIT后还要加上遇到检查点时刻。
8.6 什么是UNDO操作和REDO操作?为什么要这样设置?
答:UNDO和REDO是系统内部命令。
在DB恢复时,对于已经COMMIT但更新仍停留在缓冲区的事务要执行REDO(重做)操作,即根据日志内容把该事务对DB修改重做一遍。
对于还未结束的事务要执行UNDO(撤消)操作,即据日志内容把该事务对DB已作的修改撤消掉。
设置UNDO和REDO操作,是为了使数据库具有可恢复性。
8.7什么是“运行记录优先原则”?其作用是什么?
答:写一个修改到DB中和写一个表示这个修改的登记记录到日志文件中是两个不同的操作,后者比前者重要,后者应先做。这就是运行记录优先原则。其作用是保证DBS具有可恢复性。
8.8数据库恢复的基本原则是什么?具体实现方法是什么?
答:恢复的基本原则是“冗余”,即数据重复存储。
为了做好恢复工作,在平时应做好两件事:定时对DB进行备份;建立日志文件,记录事务对DB的更新操作。
8.9数据库的并发操作会带来哪些问题?如何解决?
答:如果不加控制,数据库的并发操作会带来三个问题:丢失更新问题、依赖于未提交更新的问题和不一致分析问题。
解决并发操作带来的问题,可以使用封锁技术和时标技术。
8.10为什么DML可以单独提供解除S封锁的命令,而不单独提供解除X封锁的命令?
答:为防止由事务的ROLLBACK引起丢失更新操作,X封锁必须保留到事务终点,因此DML不提供专门的解除X锁的操作,即解除X锁的操作合并到事务的终点去做。而在未到事务终点时,执行解除S锁的操作,可以增加事务并发操作的程度,但对DB不会产生什么错误的影响,因此DML可以提供专门的解除S锁的的操作,让用户使用。
8.12死锁的发生是坏事还是好事?试说明理由。如何解除死锁状态?
答:在DBS运行时,死锁状态是我们不希望发生的,因此死锁的发生本身是一件坏事。但是坏事可以转换为好事。如果我们不让死锁发生,让事务任意并发做下去,那么有可能破坏中的数据,或使用户读了错误的数据。从这个意义上讲,死锁的发生是一件好事,能防止错误的发生。在发生死锁后,系统的死锁处理机制和恢复程序就能起作用,抽取某个事务作为牺牲品,把它撤消,做ROLLBACK操作,使系统有可能摆脱死锁状态,继续运行下去。
8.13 试叙述“串行调度”与“可串行化调度”的区别。
答:如果多个事务依次执行,则称事务串行调度。
如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。
8.15什么是数据库的完整性?DBMS的完整性子系统的主要功能是什么?
答:DB中完整性是指数据的正确性、有效性和相容性,防止错误的数据进入DB。
DBMS完整性子系统的主要功能有两点:监督事务的执行,并测试是否违反完整性规则;若有违反现象,则采取恰当的操作。
8.16完整性规则由哪几个部分组成?SQL中的完整性约束有哪些?
答:完整性规则由三部分组成:触发条件,约束条件和ELSE子句。
SQL中把完整性约束分成三大类:域约束。基本表约束和断言。
8.17参照完整性规则在SQL中可以用哪几种方法实现?删除参照关系的元组时,对依赖关系有哪些影响?修改参照关系的主键值时,对依赖关系有哪些影响?
答:参照完整性规则,在SQL中可以用外键子句、检查子句、断言等三种方式实现。
删除参照关系的元组时,对依赖关系的影响可以采取下列三种做法之一:
RESTRICT方式、CASCADE方式和SET NULL方式。
修改参照关系的主键值时,对依赖关系的影响也可以采取与上述类似的三种做法之一。
8.18 试对SQL中检查约束(CHECK子句)和断言两种完整性约束进行比较,各说明什么对象?何时激活?能保证数据库的一致性吗?
答:检查子句主要用于对属性值、元组值加以限制和约束。断言实际上是一种涉及面广的检查子句,用CREATE语句来定义。
这两种约束都是在进行插入或修改时激活,进行检查。
检查子句只在定义它的基本表中有效,而对其他基本表无约束力,因此在与检查子句有关的其他基本表进行修改时,就不能保证这个基本表中检查子句的语义了。
而断言能保证完整性约束彻底实现。
8.19设教学数据库的关系如下:
S(SNO,SNAME,AGE,SEX)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,TEACHER)
试用多种方法定义下列完整性约束:
⑴ 在关系S中插入的学生年龄值应在16~25岁之间。
⑵ 在关系SC中插入元组时,其SNO值和CNO值必须分别在S和C中出现。
⑶ 在关系C中删除一个元组时,首先要把关系SC中具有同样CNO值的元组全部删去。
⑷ 在关系S中把某个SNO值修改为新值时,必须同时把关系SC中那些同样的SNO值也修改为新值。
解:这里每个约束用一种方式定义。
(1)用检查子句定义:
CHECK(AGE BETWEEN 16 AND 25);
(2)在关系SC的定义中,用外键子句定义:
FOREIGN KEY(SNO) REFERENCES S(SNO);
FOREIGN KEY(CNO) REFERENCES C(CNO);
(3)在关系SC的定义中,用外键子句定义:
FOREIGN KEY(CNO) REFERENCES C(CNO)
ON DELETE CASCADE;
(4)在关系SC的定义中,用外键子句定义:
FOREIGN KEY(SNO) REFERENCES S(SNO)
ON UPDATE CASCADE;
8.20 在教学数据库中的关系S、SC、C中,试用SQL的断言机制定义下列两个完整性约束:
⑴ 每位教师开设的课程不能超过10门。
(2)不允许男同学选修WU老师的课程。
(3)每门课程最多50名男同学选修
(4)学生必须在选修Maths课后,才能选修其他课程。
(5)每个男学生最多选修20门课程。
解:⑴ 每位教师开设的课程不能超过10门。
CREATE ASSERTION ASSE5 CHECK
(10>=ALL(SELECT COUNT(CNO)
FROM C
GROUP BY TNAME))
(2)不允许男同学选修WU老师的课程。
CREATE ASSERTION ASSE2 CHECK
(NOT EXISTS ( SELECT *
FROM SC
WHERE CNO IN (SELECT CNO
FROM C
WHERE TNAME=’WU’
AND SNO IN (SELECT SNO
FROM C
WHERE SEX=’男’)));
(3)每门课程最多50名男同学选修
CREATE ASSERTION ASSE3 CHECK
(50>=ALL(SELECT COUNT(SC.SNO)
FROM S, SC
WHERE S.SNO=SC.SNO AND SEX=’ 男’
GROUP BY CNO));
(4) 学生必须在选修Maths课后,才能选修其他课程。
这个约束可用下列形式表达:
“不存在一个学生的选课,这个学生没学过Maths课”。
这样就能很容易地写出断言:
CREATE ASSERTION ASSE4 CHECK
(NOT EXISTS( SELECT SNO
FROM SC X
WHERE NOT EXISTS
(SELECT *
FROM SC Y, C
WHERE Y.CNO=C.CNO
AND Y.SNO=X.SNO
AND CNAME=’Maths’)));
(5)每个男学生最多选修20门课程。
CREATE ASSERTION ASSE5 CHECK
(20>=ALL(SELECT COUNT(CNO)
FROM S, SC
WHERE S.SNO=SC.SNO AND SEX=’男’
GROUP BY S.SNO));
8.21 什么是数据库的安全性?有哪些级别的安全措施?
答:DB的安全性是指保护DB,防止不合法的使用,以免数据的泄密、更新或破坏。为了保护DB,防止恶意的滥用,可以在从低到高五个级别上设置各种安全措施:环境级、职员级、OS级、网络级、DBS级。(解释略)
8.24 SQL的视图机制有哪些优点?
答:SQL的视图机制使系统具有三个优点:数据安全性,逻辑独立性和操作简便性。
8.25 SQL2中的用户权限有哪几类?并做必要的解释。
答:SQL2中的用户权限有六类:SELECT、INSERT、DELETE、UPDATE、REFERENCES和USAGE.
10.3什么是对象联系图?图中,椭圆、小圆圈、单箭头(→)、双箭头(→→)、双线箭头(⇒)、双向箭头(←→)这些结构各表示什么含义?
答:描述类型定义间嵌套和递归联系的图称为对象联系图。图中,每个对象可以有若干属性,属性的类型可以是基本数据类型、元组类型或集合类型,而元组或集合是以指针形式(引用类型)实现。
对象联系图中椭圆表示对象类型(相当于实体类型);小圆圈表示属性是基本数据类型,单箭头(→)表示属性值是单值;双箭头(→→)表示属性值是多值;双线箭头(=>)表示对象类型之间的子类与超类联系(从子类指向超类);双向箭头(↔)表示两个属性之间值的联系为逆联系。
10.4面向对象的类型系统有哪三部分组成?每一部分又有哪些数据类型?
答:面向对象的类型系统基本数据类型、复合类型和引用类型三部分组成。
基本数据类型有整型、浮点型、字符、字符串型、布尔型和枚举型等五种。
复合类型有行类型、数组类型、列表类型、包类型和集合类型等五种。
引用类型只要一种。
10.5在ORDB中有哪些基本数据类型?有哪些复合数据类型?
答:基本数据类型有整型、浮点型、字符串型和日期型等。
复合类型有结构类型、数组类型、多集类型和集合类型等四种。
10.6 ORDB中,子表和超表应满足哪两个一致性要求?
答:(1)超表中每个元组最多可以与每个子表中的一个元组对应。
(2)子表中每个元组在超表中恰有一个元组对应。
10.7 图13.11是有关教师(Faculty)、系(Department)和系主任(Director)信息的对象联系图。
(1)试用ORDB的定义语言,定义这个数据库。
(2)试用ORDB的查询语言,分别写出下列查询的SELECT语句:
① 检索精通俄语(Russian)的教师工号和姓名。
② 检索复旦大学出访过瑞士(Switzerland)并且精通日语(Japanese)的系主任。
(大学名)university
(系名)dname
works_for
staff
dire
dno(系主任编号)
countries
(出访过的国家)
languages(精通的外语)
fanem(姓名)
fno(工号)
Director
Department
Faculty
图13.11 对象联系图
解:(1)CREATE TYPE MyString char varying;
CREATE TABLE department(university MyString,
dname MyString,
staff setof(ref(faculty)),
dire ref(director));
CREATE TABLE faculty(fno integer,
fname MyString
languages setof(MyString),
countries setof(MyString),
works_for ref(department));
CREATE TABLE director(dno integer)
Under faculty;
(2)① SELECT fno, fname
FROM faculty
WHERE ‘Russian’ in languages;
② SELECT D.dno, D.fname
FROM director as D
WHERE D.works_for.university=’Fudan University’
AND ‘Switzerland’ in D.countries
AND ‘Japanese’ in D.languages;
10.8 图13.12是有关学生(student)和学习(study)信息的对象联系图。
study
student
(课程名)coursename
(成绩)grade
(求学地)city
(大学)university
studies
student
city(籍贯)
sname(姓名)
sno(身份证号)
图13.12 对象联系图
(1)试解释这个对象联系图。
(2)试用ORDB的定义语言,定义这个数据库。
(3)试用ORDB的查询语言,分别写出下列查询的SELECT语句:
① 检索每个学生的学习课程和成绩。
② 检索至少有一门课程的求学地与籍贯在同一城市的学生学号和姓名。
解:(1)对象student包含身份证号、姓名、籍贯和学习(studies)等属性,对象study包含课程名、成绩、求学地、大学以及学生(student)等属性。对象student和study之间联系为1:N。
(2)CREATE TYPE MyString char varying;
CREATE TABLE student(sno integer,
sname MyString,
city MyString,
studies setoff(ref(study)));
CREATE TABLE study(coursename MyString,
grade integer,
city MyString,
university MyString,
student ref(student));
(3) ①SELECT A.sname, B.coursename, B.grade
FROM student as A, A.studies as B;
② SELECT A.sno, A.sname
FROM student as A, A.student as B
WHERE A.city=B.city;
数据库原理模拟试卷
一、填空题(本大题共15个空,每空1分,共15分)
1. 在数据库的三级模式结构中,数据是按(内)模式的描述存储在磁盘中,按(外)模式提供给用户的。
2. 在关系中,能唯一标识元组的属性称为(超键)。
3. 分布式数据库系统的特点是数据的(分布)性和整体的(逻辑)性。
4. 在对象关系模型中,属性的符合类型包括:多集类型、数组类型、(结构)类型和(集合)类型。
5. 对于函数依赖x→Y,如果Y是X的子集,此函数称为(平凡)函数依赖。
6. E-R方法的三要素是:实体、属性和(联系)。
7. 假设两个事务同时存取同一个数据集,当第一个事务结束之前,第二个事务更新数据库, 这就违反了事务的(隔离)性,破坏了DB的一致性。
8. 假设一个学生只属于一个班级,则班级和学生之间是(一对多,1:N)联系; 学生可以同时修多门课程,学生和课程之间是(多对多,M:N)联系。
9. 数据完整性约束分为(静态)约束和(动态)约束。
10. 在数据库系统中,所有应用程序都通过(DBMS)访问数据库。
二、填空题(本大题共20个空,每空1分,共20分)
1. 结构数据模型的组成包括:数据结构,(数据操作)和(数据完整性约束)。
2. 在函数依赖中,平凡的函数依赖根据Armstrong推理规则中的(自反)律就可推出。
3. 标准的数据库三级模式是概念模式、(内)模式和(外)模式。
4. 用有向图结构表示实体类型及实体间联系的数据模型称为(网状)模型。
5. 若用户编写程序时,只需指出做什么,不需指出怎么做,这类DML是(非过程性)DML;关系的DML属于这一类。
6. 在SQL中,用(update)命令可以修改表中的数据,用(ALTER)命令可以修改表的结构。
7. 在ER图中,菱形框表示(联系)。
8. 物理结构设计是设计DB的物理结构,主要包括DB的(存储结构)和存取方法。
9. 并发控制的主要方法是采用(封锁机制)。
10. 在并行处理中,若干事物相互等待对方释放封锁,称为系统进入(死锁)状态。
11. DDBS的“地址透明性”位于(分片)模式和(分配)模式之间。
二、单项选择题(本大题共20小题,每小题1分,共20分)
1. 位于用户和数据库之间的一层数据管理软件是 ( C )
A.DBS B.DB C.DBMS D.MIS
2. 一个事务中所有对数据库操作是一个不可分割的操作序列,这称为事务的 ( A )
A.原子性 B.一致性 C.隔离性 D.持久性
3. 关系代数的五个基本操作是:并、差、选择、投影和 ( D )
A.等值连接 B.F连接
C.自然连接 D.笛卡儿积
4. 在关系数据库中,表与表之间的联系是通过( B )实现的。
A.实体完整性规则 B.参照完整性规则
C.用户自定义的完整性规则 D.主键
5. 数据字典产生于数据库设计步骤的 ( A )
A.需求分析阶段 B.概念设计阶段
C.逻辑设计阶段 D.物理设计阶段
6. 在数据库技术中,未提交的随后又被撤消的数据称为 ( D )
A.错误数据 B.冗余数据
C.过期数据 D.脏数据
7. 在SQL中,建立视图用的命令是 ( C )
A.CREATE SCHEMA B.CREATE TABLE
C.CREATE VIEW D.CREATE INDEX
8. 分布式数据库系统的透明性主要表现在位置透明性和 ( C )
A.数据透明性 B.处理透明性
C.复制透明性 D.映射透明性
9. 在数据库的E-R图中,菱形框表达的是 ( C )
A. 属性 B.实体
C.实体之间的联系 D.实体与属性之间的联系
10. 设关系R和S的结构相同,并且各有80个元组,假如这两个关系作并运算, 其运算结果的元组个数为 ( D )
A .80 B.小于等于80 C.大于等于160 D. 大于等于80,小于等于160
11. 以下操作中,不能用DML实现的是 ( B )
A.数据查询 B.定义数据库的三级结构
C.数据插入 D.数据删除
展开阅读全文