一、填空1.传统的集合“并、交、差”运算施加于两个关系时,这两个关系的属性个数必须相等,相对应的属性值必须取自同一个域。
2.指出下列缩写的含义:DBMS DBMS数据库管理系统、DBA DBA 数据库管理员。
5.数据库在运行过程中可能产生的故障有①Transaction failure②System crash③Disk failure3.关系数据库中基于数学上两类运算是关系代数和关系演算。
4.数据库设计的几个步骤是需求分析,概念设计,逻辑设计,物理设计,编码和调试、实施运行和维护。
7.关系操作的特点是集合操作。
5.在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有的函数依赖和无损连接。
6.SQL语言的数据定义功能包括定义数据库、定义基本表、定义视图和定义索引。
二、判断1.view可串行化的调度(schedule)一定也是冲突(conflict)可串行化的调度。
错2.在确定关系的候选码时,如果属性X在函数依赖的左右都不出现,则候选码中必不包含X。
错三、简答2.什么是关系的外码?并举例说明。
答:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R 的外部码,也称外码。
学生数据库中有关系STUDENT(SNO,SNAME,SEX,AGE)、关系COURSE(CNO,CNAME)和关系SC(SNO,CNO,GRADE),SC关系中SNO是外码,其参照关系是STUDENT;CNO也是外码,其参照关系是COURSE。
3.如何通过定义视图和存取控制保证数据库的安全性?并用SQL语言举例说明。
视图能够对机密数据提供安全保护。
有了视图机制,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,使机密数据不出现在不应看到这些数据的用户视图上,这样就由视图的机制自动提供了对机密数据的安全保护功能。
例如Student表涉及三个系的学生数据,可以在其上定义三个视图,每个视图只包含一个系的学生数据,并只允许每个系的学生查询自己所在系的学生视图。
例:建立信息系学生的视图。
CREATE VIEW IS_StudentASSELECT Sno, Sname,SageFROM StudentWHERE Sdept='IS';数据库的安全性是指保护数据库,防止不合法的使用所造成的数据泄露和破坏。
数据库系统中保证数据安全性的主要措施是进行存取控制,即规定不同用户对于不同数据对象所允许执行的操作,并控制各用户只能存取他有权存取的数据。
不同的用户对不同的数据应具有何种操作权力,是由DBA和表的建立者(即表的属主)根据具体情况决定的,SQL语言则为DBA和表的属主定义和回收这种权力提供了手段。
例:把查询Student表权限授给用户U1。
GRANT SELECT ON TABLEStudent TO U1;1.什么是数据库?答:数据库是长期存储在计算机内、有组织的、可共享的数据集合。
数据库是按某种数据模型进行组织的、存放在外存储器上,且可被多个用户同时使用。
因此,数据库具有较小的冗余度,较高的数据独立性和易扩展性。
2.什么是数据库的数据独立性?答:数据独立性表示应用程序与数据库中存储的数据不存在依赖关系,包括逻辑数据独立性和物理数据独立性。
逻辑数据独立性是指局部逻辑数据结构(外视图即用户的逻辑文件)与全局逻辑数据结构(概念视图)之间的独立性。
当数据库的全局逻辑数据结构(概念视图)发生变化(数据定义的修改、数据之间联系的变更或增加新的数据类型等)时,它不影响某些局部的逻辑结构的性质,应用程序不必修改。
物理数据独立性是指数据的存储结构与存取方法(内视图)改变时,对数据库的全局逻辑结构(概念视图)和应用程序不必作修改的一种特性,也就是说,数据库数据的存储结构与存取方法独立。
数据独立性的好处是,数据的物理存储设备更新了,物理表示及存取方法改变了,但数据的逻辑模式可以不改变。
数据的逻辑模式改变了,但用户的模式可以不改变,因此应用程序也可以不变。
这将使程序维护容易,另外,对同一数据库的逻辑模式,可以建立不同的用户模式,从而提高数据共享性,使数据库系统有较好的可扩充性,给 DBA维护、改变数据库的物理存储提供了方便。
3.叙述等值连接与自然连接的区别和联系。
答:等值连接表示为R A=B S,自然连接表示为R S;自然连接是除去重复属性的等值连接。
两者之间的区别和联系如下:自然连接一定是等值连接,但等值连接不一定是自然连接。
等值连接不把重复的属性除去;而自然连接要把重复的属性除去。
等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
等值连接不把重复的属性除去;而自然连接要把重复的属性除去。
2.数据库管理系统有哪些功能?答:数据库管理系统(DBMS)是位于操作系统与用户之间的一个数据管理软件,它主要功能包括以下几个方面:·数据定义功能 DBMS提供数据描述语言(DDL),用户可通过它来定义数据。
·数据操纵功能 DBMS还提供数据操纵语言(DML),实现对数据库的基本操作:查询、插入、删除和修改。
·数据库的运行管理这是DBMS运行时的核心部分,它包括开发控制,安全性检查,完整性约束条件的检查和执行,数据库的内容维护等。
·数据库的建立和维护功能它包括数据库初始数据的输入及转换,数据库的转储与恢复,数据库的重组功能和性能的监视与分析功能等。
3.事务中的提交和回滚是什么意思?答:事务中的提交(COMMIT)是提交事务的所有操作。
具体说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。
事务中的回滚(ROLLBACK)是数据库滚回到事务开始时的状态。
具体地说就是,在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤消,使数据库回滚到事务开始时的状态。
五应用题1.已知 R<U,F>U={ A,B,C,D,E }F={AB →C, C →D,D →E}R的一个分解ρ={ R1( A,B,C ),R2(C,D),R3(D,E) }判断ρ是否为无损连接?1.构造一个初始二维表如下图2.运用函数依赖后,二维表最终变为如下表所示因此该分解是无损连接的。
3 由Armstrong公理证明:合并规则:若X->Z , X->Y, 则X->YZ证明:因为 X→Y所以 X→XY (增广律)因为 X→Z所以 XY→ZY (增广律)所以 X→YZ (传递律)六、综合题:1..设工厂里有一个记录职工每天日产量的关系模式:R(职工编号,日期,日产量,车间编号,车间主任)。
如果规定:每个职工每天只有一个日产量;每个职工只能隶属于一个车间;每个车间只有一个车间主任。
试回答下列问题:⑴根据上述规定,写出模式R的基本FD和关键码;⑵说明R不是2NF的理由,并把R分解成2NF模式集;⑶进而再分解成3NF模式集,并说明理由。
1.解:①基本的FD有3个:(职工编号,日期)→日产量职工编号→车间编号车间编号→车间主任R的关键码为(职工编号,日期)。
② R中有两个这样的FD:(职工编号,日期)→(车间编号,车间主任)职工编号→(车间编号,车间主任)可见前一个FD是局部依赖,所以R不是2NF模式。
R应分解成R1(职工编号,车间编号,车间主任)R2(职工编号,日期,日产量)此处,R1和R2都是2NF模式。
③ R2已是3NF模式。
在R1中,存在两个FD:职工编号→车间编号车间编号→车间主任因此,“职工编号→车间主任”是一个传递依赖,R1不是3NF模式。
R1应分解成R11(职工编号,车间编号)R12(车间编号,车间主任)这样,ρ= { R11,R12,R2 }是一个3NF模式集。
2.设有关系S、SC、C,试用关系代数、元组关系演算表达式和SQL完成下列操作。
(15分,每小题5分)S(S#,SNAME,AGE,SEX) 例:(001,'李强',23,’男')SC(S#,C#,SCORE)例:(003,'C1',83)C(C#,CNAME,TEACHER)例:('C1','数据库原理','王华')(1)试用关系代数检索选修了“程军”老师所授课程之一的学生姓名。
∏SNAME (S SC TEACHER='程军'(C))(2)试用元组关系演算表达式检索选修了“程军”老师所授课程之一的学生姓名。
{T(1)|(∃U)(∃V)(∃W)(S(U)∧SC(V)∧C(W)∧T[1]=U[1]∧U[1]=V[1]∧V[2]=W[1]∧W[3]='程军')}(2)试用元组关系演算表达式检索选修了“程军”老师所授课程之一的学生学号。
{T(1)| (∃V)(∃W)( SC(V)∧C(W)∧T[1]=V[1]∧V[2]=W[1]∧W[3]='程军')}(3)找出“程序设计”课程成绩在90分以上的学生姓名。
SELECT SNAMEFROM S,SC,CWHERE S.S#=SC.S# ANDSC.C#=C.C# AND SCORE>=90AND CNAME='程序设计'或者SELECT SNAMEFROM SWHERER S.S# IN (SELECT S#FROM SCWHERE SCORE>=90 AND C.C#IN (SELECT C# FROM CWHERE CNAME='程序设计')2.设有关系S、SC、C,试用关系代数、元组关系演算表达式和SQL完成下列操作。
(15分,每小题5分)S(S#,SNAME,AGE,SEX) 例:(001,'李强',23,’男')SC(S#,C#,SCORE) 例:(003,'C1',83)C(C#,CNAME,TEACHER) 例:('C1','数据库原理','王华')(1)用关系代数检索既选修了C1课程,又选修了C2课程的学生学号。
(∏SNAME(S C#='C1'(SC)))∩(∏SNAME(S C#='C2'(SC)))(2)用元组关系演算表达式检索年龄大于21的男生的学号和姓名。
{t(2)|(∃r)(S(r)∧t[1]=r[1]∧t[2]=r[2]∧r[3]>21∧r[4]='男')}(3)用SQL找出“程序设计”课程成绩在90分以上的学生姓名。
解:SELECT SNAMEFROM S,SC,CWHERE S.S#=SC.S# ANDSC.C#=C.C# AND SCORE>=90AND CNAME='程序设计'或者SELECT SNAMEFROM SWHERER S.S# IN (SELECT S#FROM SCWHERE SCORE>=90AND SC.C# IN (SELECT C#FROM C WHERE CNAME='程序设计')2.设有关系S、SC、C,试用关系代数、元组关系演算表达式和SQL完成下列操作。