《数据库》第5章习题答案
- 格式:docx
- 大小:24.26 KB
- 文档页数:3
第4、5章练习题(数据库的安全性、完整性)一、选择题1.下面哪个不是数据库系统必须提供的数据控制功能。
A.安全性B.可移植性C.完整性D.并发控制答案:B2.保护数据库,防止未经授权的或不合法的使用造成的数据泄漏、更改破坏。
这是指数据的。
A.安全性B.完整性C.并发控制D.恢复答案:A3.数据库的是指数据的正确性和相容性。
A.安全性B.完整性C.并发控制D.恢复答案:B4.在数据系统中,对存取权限的定义称为。
A.命令 B.授权 C.定义 D.审计答案:B5.数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的。
A.可靠性B.一致性C.完整性D.安全性答案:D6.下列SQL语句中,能够实现“收回用户ZHAO对学生表(STUD)中学号(XH)的修改权”这一功能的是A.REVOKE UPDATE(XH) ON TABLE FROM ZHAO B.REVOKE UPDATE(XH) ON TABLE FROM PUBLICC.REVOKE UPDATE(XH) ON TABLE STUD FROM ZHAO D.REVOKE UPDATE(XH) ON STUD FROM PUBLIC答案:C 7.把对关系SC的属性GRADE的修改权授予用户ZHAO的SQL语句是A)GRANT GRADE ON SC TO ZHAO B)GRANT UPDATE ON SC TO ZHAOC)GRANT UPDATE (GRADE) ON SC TO ZHAO D)GRANT UPDATE ON SC (GRADE) TO ZHAO 答案:C8.以下( D )不属于实现数据库系统安全性的主要技术和方法。
A. 存取控制技术B. 视图技术C. 审计技术D. 出入机房登记和加锁9.SQL中的视图提高了数据库系统的( D )。
A. 完整性B. 并发控制C. 隔离性D. 安全性10.安全性控制的防范对象是( B ),防止他们对数据库数据的存取。
(完整版)第五章_数据库完整性(习题)一、选择题1.完整性检查和控制的防范对象是( ),防止它们进入数据库。
安全性控制的防范对象是(),防止他们对数据库数据的存取。
A.不合语义的数据 B。
非法用户 C.不正确的数据 D.非法操作2.找出下面SQL命令中的数据控制命令().A。
GRANT MIT C.UPDATE D.SELECT3.下述SQL命令中,允许用户定义新关系时,引用其他关系的主码作为外码的是()。
A。
INSERT B。
DELETE C.REFERENCES D. SELECT4.下述SQL命令的短语中,不用于定义属性上约束条件的是()。
A.NOT NULL短语 B。
UNIQUE短语 C.CHECK短语 D。
HAVING短语二、填空题1.数据库的完整性是指数据的正确性和相容性.2.关系模型的实体完整性在CREATE TABLE中用 primary key 关键字来实现。
3.检查主码值出现不唯一和有一个为空违约情况时,则DBMS拒绝插入或修改。
4.关系模型的参照完整性在CREATE TABLE中用 foreign key关键字来实现。
5.当参照完整性检查出现违约情况时,则DBMS可以采用拒绝、级联和设置为空策略处理。
6.参照完整性的级连操作的关键字是cascade .7.在CREATE TABLE中定义属性上的约束条件,包括not null 、unique 和 check。
8.在CREATE TABLE中定义属性上的约束条件,检查列值唯一用unique 关键字。
9.关系模型的元组上的约束条件的定义,在CREATE TABLE中用check关键字来实现。
10.在Sno(学号)列上创建约束,要求Sno的值在18至22岁之间,约束名Sno_CK。
请写出对应的完整性命名子句constraintSno_CK primary key check(sno between 18 and 22)。
1.A C ;BD 2. A 3。
第五章一、填空题1.逗号或,2. 33.FLOOR(3+RAND()*(11-3+1))或FLOOR(3+RAND()*9)4.NULL5.ON DUPLICATE KEY二、判断题1.错2.对3.错4.对5.对三、选择题1. D2. B3. D4. A5. C四、简答题1.请简述DELETE与TRUNCA TE的区别。
答:①实现方式不同:TRUNCATE本质上先执行删除(DROP)数据表的操作,然后再根据有效的表结构文件(.frm)重新创建数据表的方式来实现数据清空操作。
而DELETE语句则是逐条的删除数据表中保存的记录。
②执行效率不同:在针对大型数据表(如千万级的数据记录)时,TRUNCATE清空数据的实现方式,决定了它比DELETE语句删除数据的方式执行效率更高。
③对AUTO_INCREMENT的字段影响不同,TRUNCATE清空数据后,再次向表中添加数据,自动增长字段会从默认的初始值重新开始,而使用DELETE语句删除表中的记录时,则不影响自动增长值。
④删除数据的范围不同:TRUNCATE语句只能用于清空表中的所有记录,而DELETE语句可通过WHERE指定删除满足条件的部分记录。
⑤返回值含义不同:TRUNCATE操作的返回值一般是无意义的,而DELETE语句则会返回符合条件被删除的记录数。
⑥所属SQL语言的不同组成部分:DELETE语句属于DML数据操作语句,而TRUNCA TE通常被认为是DDL数据定义语句。
2.请简述WHERE与HA VING之间的区别。
1答:①WHERE操作是从数据表中获取数据,用于将数据从磁盘存储到内存中,而HA VING是对已存放到内存中的数据进行操作。
②HA VING位于GROUP BY子句后,而WHERE位于GROUP BY 子句之前。
③HA VING关键字后可以跟聚合函数,而WHERE则不可以。
通常情况下,HA VING关键字与GROUPBY一起使用,对分组后的结果进行过滤。
数据库课后习题作业答案《数据库系统概论》课程习题及参考答案第⼀章绪论(教材37页)1.试述数据、数据库、数据库系统、数据库管理系统的概念。
答:数据:描述事物的符号记录称为数据。
数据的种类有⽂字、图形、图像、声⾳、正⽂等等。
数据与其语义是不可分的。
数据库:数据库是长期储存在计算机内、有组织的、可共享的数据集合。
数据库中的数据按⼀定的数据模型组织、描述和储存,具有较⼩的冗余度、较⾼的数据独⽴性和易扩展性,并可为各种⽤户共享。
数据库系统:数据库系统(DBS)是指在计算机系统中引⼊数据库后的系统构成。
数据库系统由数据库、数据库管理系统(及其开发⼯具)、应⽤系统、数据库管理员构成。
数据库管理系统:数据库管理系统(DBMS)是位于⽤户与操作系统之间的⼀层数据管理软件。
⽤于科学地组织和存储数据、⾼效地获取和维护数据。
DBMS 主要功能包括数据定义功能、数据操纵功能、数据库的运⾏管理功能、数据库的建⽴和维护功能。
2.使⽤数据库系统有什么好处?答:使⽤数据库系统的好处是由数据库管理系统的特点或优点决定的。
使⽤数据库系统的好处很多,例如可以⼤⼤提⾼应⽤开发的效率,⽅便⽤户的使⽤,减轻数据库系统管理⼈员维护的负担等。
为什么有这些好处,可以结合第 5题来回答。
使⽤数据库系统可以⼤⼤提⾼应⽤开发的效率。
因为在数据库系统中应⽤程序不必考虑数据的定义、存储和数据存取的具体路径,这些⼯作都由 DBMS来完成。
此外,当应⽤逻辑改变,数据的逻辑结构需要改变时,由于数据库系统提供了数据与程序之间的独⽴性。
数据逻辑结构的改变是 DBA的责任,开发⼈员不必修改应⽤程序,或者只需要修改很少的应⽤程序。
从⽽既简化了应⽤程序的编制,⼜⼤⼤减少了应⽤程序的维护和修改。
使⽤数据库系统可以减轻数据库系统管理⼈员维护系统的负担。
因为 DBMS 在数据库建⽴、运⽤和维护时对数据库进⾏统⼀的管理和控制,包括数据的完整性、安全性,多⽤户并发控制,故障恢复等等都由DBMS执⾏。
习题51、 理解并给出下列术语的定义:1)设R(U)是一个属性集U 上的关系模式,X 和Y 是U 的子集。
若对于R(U)的任意一个可能的关系r ,r 中不可能存在两个元组在X 上的属性值相等, 而在Y 上的属性值不等, 则称 X 函数确定Y 或 Y 函数依赖于X ,记作X →Y 。
2) 完全函数依赖在R(U)中,如果X →Y ,并且对于X 的任何一个真子集X ’,都有Y 不函数依赖于X ’ ,则称Y 对X 完全函数依赖,记作Y X F −→−3) 部分函数依赖若X →Y ,但Y 不完全函数依赖于X ,则称Y 对X 部分函数依赖,记作Y X p−→−4) 传递函数依赖在R(U)中,如果X →Y ,(Y ⊆X) , Y →X ,Y →Z , 则称Z 对X 传递函数依赖。
记为:Z X T −→−注: 如果Y →X , 即X ←→Y ,则Z 直接依赖于X 。
5)候选码设K 为R (U,F )的属性或属性组合。
若U K F →, 则K 称为R 的侯选码。
6)主码:若候选码多于一个,则选定其中的一个作为主码。
7)外码:关系模式 R 中属性或属性组X 并非 R 的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key )也称外码8)如果一个关系模式R 的所有属性都是不可分的基本数据项,则R ∈1NF.9)若R ∈1NF ,且每一个非主属性完全函数依赖于码,则R ∈2NF 。
10)如果R(U,F )∈2NF ,并且所有非主属性都不传递依赖于主码,则R(U,F )∈3NF 。
11)关系模式R (U ,F )∈1NF ,若X →Y 且Y ⊆ X 时X 必含有码,则R (U ,F ) ∈BCNF 。
12)关系模式R<U ,F>∈1NF ,如果对于R 的每个非平凡多值依赖X →→Y (Y ⊆ X ),X 都含有码,则R ∈4NF 。
2、 关系规范化的操作异常有哪些?1) 数据冗余大2) 插入异常3) 删除异常4) 更新异常3、 第一范式、第二范式和第三范式关系的关系是什么?4、 已知关系模式R(A,B,C,D,E)及其上的函数依赖集合F={A->D,B->C,E-> A},该关系模式的候选码是什么?候选码为:(E,B)5、 已知学生表(学号,姓名,性别,年龄,系编号,系名称),存在的函数依赖集合是{学号->姓名,学号->性别,学号->年龄,学号->系编号,系编号->系名称},判断其满足第几范式。
第五章 关系数据理论一、 单项选择题1、设计性能较优的关系模式称为规范化,规范化主要的理论依据是 ( )A 、关系规范化理论B 、关系运算理论C 、关系代数理论D 、数理逻辑2、关系数据库规范化是为解决关系数据库中( )问题而引入的。
A 、插入、删除和数据冗余B 、提高查询速度C 、减少数据操作的复杂性D 、保证数据的安全性和完整性3、当关系模式R (A ,B )已属于3NF ,下列说法中( )是正确的。
A 、它一定消除了插入和删除异常B 、一定属于BCNFC 、仍存在一定的插入和删除异常D 、A 和C 都是4、在关系DB 中,任何二元关系模式的最高范式必定是( )A 、1NFB 、2NFC 、3NFD 、BCNF5、当B 属性函数依赖于A 属性时,属性A 与B 的联系是( )A 、1对多B 、多对1C 、多对多D 、以上都不是6、在关系模式中,如果属性A 和B 存在1对1的联系,则说( )A 、A B B 、B A C 、A B D 、以上都不是7、关系模式中,满足2NF 的模式,( )A 、可能是1NFB 、必定是1NFC 、必定是3NFD 、必定是BCNF8、关系模式R 中的属性全部是主属性,则R 的最高范式必定是( )A 、2NFB 、3NFC 、BCNFD 、4NF9、关系模式的候选关键字可以有( c ),主关键字有( 1个 )A 、0个B 、1个C 、1个或多个D 、多个10、如果关系模式R 是BCNF 范式,那么下列说法不正确的是( )。
A 、R 必是3NFB 、R 必是1NFC 、R 必是2NFD 、R 必是4NF11、图4.5中给定关系R ( )。
A 、不是3NFB 、是3NF 但不是2NFC 、是3NF 但不是BCNFD 、是BCNF12、设有如图4.6所示的关系R ,它是( )A 、1NFB 、2NFC 、3NFD 、4NF二、 填空题1、如果模式是BCNF ,则模式R 必定是(3NF ),反之,则( 不一定 )成立。
数据库第五章课后习题答案关系规范化理论题⽬4.20 设关系模式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。
4.21 设关系模式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是损失分解。
4.22 设关系模式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。
4.23设关系模式R(ABCD),R上的FD集F={A→C,D→C,BD→A},试说明ρ={AB,ACD,BCD }相对于F是损失分解的理由。
答:据已知的F集,不可能把初始表格修改为有⼀个全a⾏的表格,因此ρ相对于F是损失分解。
4.24 设关系模式R(ABCD)上FD集为F,并且F={A→B,B→C,D→B}。
① R分解成ρ={ACD,BD},试求F在ACD和BD上的投影。
② ACD和BD是BCNF吗?如不是,望分解成BCNF。
解:① F在模式ACD上的投影为{A→C,D→C},F在模式BD上的投影为{D→B}。
②由于模式ACD的关键码是AD,因此显然模式ACD不是BCNF。
第五章习题一、选择题:1.关系规范化中的删除操作异常是指①,插入操作异常是指②。
A.不该删除的数据被删除B.不该插入的数据被插入C.应该删除的数据未被删除D.应该插入的数据未被插入答案:①A ②D2.设计性能较优的关系模式称为规范化,规范化主要的理论依据是____。
A.关系规范化理论B.关系运算理论C.关系代数理论D.数理逻辑答案:A3.规范化理论是关系数据库进行逻辑设计的理论依据。
根据这个理论,关系数据库中的关系必须满足:其每一属性都是____。
A.互不相关的B.不可分解的C.长度可变的D.互相关联的答案:B4.关系数据库规范化是为解决关系数据库中____问题而引人的。
A.插入、删除异常和数据冗余B.提高查询速度C.减少数据操作的复杂性D.保证数据的安全性和完整性答案:A5.规范化过程主要为克服数据库逻辑结构中的插入异常,删除异常以及____的缺陷。
A.数据的不一致性B.结构不合理C.冗余度大D.数据丢失答案:C6.当关系模式R(A,B)已属于3NF,下列说法中____是正确的。
A.它一定消除了插入和删除异常B.仍存在一定的插入和删除异常C.一定属于BCNF D.A和C都是答案:B7.关系模型中的关系模式至少是____。
A.1NF B.2NF C.3NF D.BCNF答案:A8.在关系DB中,任何二元关系模式的最高范式必定是____。
A.1NF B.2NF C.3NF D.BCNF答案:D9.在关系模式R中,若其函数依赖集中所有候选关键宇都是决定因素,则R最高范式是____。
A.2NF B.3NF C.4 NF D.BCNF答案:C10.当B属性函数依赖于A属性时,属性A与B的联系是____。
A.1对多B.多对1 C.多对多D.以上都不是答案:B11.在关系模式中,如果属性A和B存在1对1的联系,则说____。
A.A→B B.B→A C.A↔B D.以上都不是答案:C12.候选码中的属性称为____。
第5 章网络数据库管理系统SQL Server 2012课后习题参考答案1、简答题(1)简述组成SQL Server 2012 数据库的三种类型的文件。
答:SQL Server 数据库文件根据其作用的不同,可以分为主数据文件、次数据文件、事务日志文件3 种类型。
①主数据文件(primary file):主数据文件是数据库的起点,指向数据库文件的其他部分。
主数据文件是用来存放数据和数据库的初始化(启动)信息和部分或全部数据,是SQL Server 数据库的主体,它是每个数据库不可缺少的部分,每个数据库有且仅有一个主数据文件,用户数据和对象也可以存储在此文件中,主数据文件的文件扩展名为.mdf。
②次数据文件(secondary file):用来存储主数据文件没有存储的其他数据和对象。
如果数据库中的数据量很大,除了将数据存储在主数据文件中以外,还可以将一部分数据存储在次数据文件中;如果主数据文件足够大,能够容纳数据库中的所有数据,则该数据库不需要次数据文件。
使用次数据文件是因为数据量太过庞大,可以将数据分散存储在多个不同磁盘上以方便进行管理、提高读取速度。
次数据文件的扩展名为.ndf。
③事务日志文件(transaction log file):用来记录数据库更新情况的文件,SQL Server 2012具有事务功能,可以保证数据库操作的一致性和完整性,用事务日志文件来记录所有事务及每个事务对数据库进行的插入、删除和更新操作。
事务日志是数据库的重要组件,如果数据库遭到破坏,可以根据事务日志文件分析出错的原因;如果数据丢失,可以使用事务日志恢复数据库内容。
每个数据库至少拥有一个事务日志文件,也可以拥有多个日志文件。
事务日志文件的文件扩展名为.ldf。
(2)SQL Server 2012 有哪些系统数据库,它们的作用是什么?SQL Server 2012 中主要包括master、model、tempdb 和msdb 四个系统数据库。
Exercise 5.1.1 As a set:Average = 2.37 As a bag:Average = 2.48 Exercise 5.1.2Average = 218 As a bag:Average = 215 Exercise 5.1.3a As a set:161418As a bag:bore1516141615151418Exercise 5.1.3b(Ships Classes)πboreExercise 5.1.4aFor bags:On the left-hand side:Given bags R and S where a tuple t appears n and m times respectively,the union of bags R and S will have tuple t appear n + m times. Thefurther union of bag T with the tuple t appearing o times will havetuple t appear n + m + o times in the final result.On the right-hand side:Given bags S and T where a tuple t appears m and o times respectively,the union of bags R and S will have tuple t appear m + o times. Thefurther union of bag R with the tuple t appearing n times will havetuple t appear m + o + n times in the final result.For sets:This is a similar case when dealing with bags except the tuple t can only appear at most once in each set. The tuple t only appears in the result if allthe sets have the tuple t. Otherwise, the tuple t will not appear in the result. Since we cannot have duplicates, the result only has at most one copy of the tuple t.Exercise 5.1.4bFor bags:On the left-hand side:Given bags R and S where a tuple t appears n and m times respectively,the intersection of bags R and S will have tuple t appear min( n, m )times. The further intersection of bag T with the tuple t appearing otimes will produce tuple t min( o, min( n, m ) ) times in the finalresult.On the right-hand side:Given bags S and T where a tuple t appears m and o times respectively,the intersection of bags R and S will have tuple t appear min( m, o )times. The further intersection of bag R with the tuple t appearing ntimes will produce tuple t min( n, min( m, o ) ) times in the finalresult.The intersection of bags R,S and T will yield a result where tuple t appears min( n,m,o ) times.For sets:This is a similar case when dealing with bags except the tuple t can only appear at most once in each set. The tuple t only appears in the result if all the sets have the tuple t. Otherwise, the tuple t will not appear in the result.Exercise 5.1.4cFor bags:On the left-hand side:Given that tuple r in R, which appears m times, can successfully joinwith tuple s in S, which appears n times, we expect the result tocontain mn copies. Also given that tuple t in T, which appears o times,can successfully join with the joined tuples of r and s, we expect the final result to have mno copies.On the right-hand side:Given that tuple s in S, which appears n times, can successfully joinwith tuple t in T, which appears o times, we expect the result tocontain no copies. Also given that tuple r in R, which appears m times, can successfully join with the joined tuples of s and t, we expect the final result to have nom copies.The order in which we perform the natural join does not matter for bags.For sets:This is a similar case when dealing with bags except the joined tuples can only appear at most once in each result. If there are tuples r,s,t in relations R,S,T that can successfully join, then the result will contain a tuple with the schema of their joined attributes.Exercise 5.1.4dFor bags:Suppose a tuple t occurs n and m times in bags R and S respectively. In the union of these two bags R ⋃ S, tuple t would appear n + m times. Likewise, in the union of these two bags S ⋃ R, tuple t would appear m + n times. Both sides of the relation yield the same result.For sets:A tuple t can only appear at most one time. Tuple t might appear each in sets R and S one or zero times. The combinations of number of occurrences for tuple t in R and S respectively are (0,0), (0,1), (1,0), and (1,1). Only when tuple t appears in both sets R and S will the union R ⋃ S have the tuple t. The same reasoning holds when we take the union S ⋃ R.Therefore the commutative law for union holds.Exercise 5.1.4eFor bags:Suppose a tuple t occurs n and m times in bags R and S respectively. In the intersection of these two bags R ∩ S, tuple t would appear min( n,m ) times. Likewise in the intersection of these two bags S ∩ R, tuple t would appear min( m,n ) times. Both sides of the relation yield the same result.For sets:A tuple t can only appear at most one time. Tuple t might appear each in sets R and S one or zero times. The combinations of number of occurrences for tuplet in R and S respectively are (0,0), (0,1), (1,0), and (1,1). Only when tuple t appears in at least one of the sets R and S will the intersection R ∩ S have the tuple t. The same reasoning holds when we take the intersection S ∩ R.Therefore the commutative law for intersection holds.Exercise 5.1.4fFor bags:Suppose a tuple t occurs n times in bag R and tuple u occurs m times in bag S. Suppose also that the two tuples t,u can successfully join. Then in thenatural join of these two bags R S, the joined tuple would appear nm times. Likewise in the natural join of these two bags S R, the joined tuple would appear mn times. Both sides of the relation yield the same result.For sets:An arbitrary tuple t can only appear at most one time in any set. Tuples u,v might appear respectively in sets R and S one or zero times. The combinations of number of occurrences for tuples u,v in R and S respectively are (0,0), (0,1), (1,0), and (1,1). Only when tuple u exists in R and tuple v exists in S will the natural join R S have the joined tuple. The same reasoning holds when we take the natural join S R.Therefore the commutative law for natural join holds.Exercise 5.1.4gFor bags:Suppose tuple t appears m times in R and n times in S. If we take the union of R and S first, we will get a relation where tuple t appears m + n times. Taking the projection of a list of attributes L will yield a resultingrelation where the projected attributes from tuple t appear m + n times. If we take the projection of the attributes in list L first, then the projected attributes from tuple t would appear m times from R and n times from S. The union of these resulting relations would have the projected attributes of tuple t appear m + n times.For sets:An arbitrary tuple t can only appear at most one time in any set. Tuple tmight appear in sets R and S one or zero times. The combinations of number of occurrences for tuple t in R and S respectively are (0,0), (0,1), (1,0), and (1,1). Only when tuple t exists in R or S (or both R and S) will the projected attributes of tuple t appear in the result.Therefore the law holds.Exercise 5.1.4hFor bags:Suppose tuple t appears u times in R, v times in S and w times in T. On the left hand side, the intersection of S and T would produce a result where tuple t would appear min(v , w) times. With the addition of the union of R, the overall result would have u + min(v , w) copies of tuple t. On the right hand side, we would get a result of min(u + v, u + w) copies of tuple t. The expressions on both the left and right sides are equivalent.For sets:An arbitrary tuple t can only appear at most one time in any set. Tuple tmight appear in sets R,S and T one or zero times. The combinations of number of occurrences for tuple t in R, S and T respectively are (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0) and (1,1,1). Only when tuple t appears in R or in both S and T will the result have tuple t.Therefore the distributive law of union over intersection holds.Exercise 5.1.4iSuppose that in relation R, u tuples satisfy condition C and v tuples satisfy condition D. Suppose also that w tuples satisfy both conditions C and D where w≤ min(v , w). Then the left hand side will return those w tuples. On the right hand side, σ(R) produces u tuples and σD(R) produces v tuples. However,Cwe know the intersection will produce the same w tuples in the result.When considering bags and sets, the only difference is bags allow duplicate tuples while sets only allow one copy of the tuple. The example above applies to both cases.Therefore the law holds.Exercise 5.1.5aFor sets, an arbitrary tuple t appears on the left hand side if it appears in both R,S and not in T. The same is true for the right hand side.As an example for bags, suppose that tuple t appears one time each in both R,T and two times in S. The result of the left hand side would have zero copies of tuple t while the right hand side would have one copy of tuple t.Therefore the law holds for sets but not for bags.Exercise 5.1.5bFor sets, an arbitrary tuple t appears on the left hand side if it appears in R and either S or T. This is equivalent to saying tuple t only appears when it is in at least R and S or in R and T. The equivalence is exactly the right side’s expression.As an example for bags, suppose that tuple t appears one time in R and two times each in S and T. Then the left hand side would have one copy of tuple tin the result while the right hand side would have two copies of tuple t.Therefore the law holds for sets but not for bags.Exercise 5.1.5cFor sets, an arbitrary tuple t appears on the left hand side if it satisfies condition C, condition D or both condition C and D. On the right hand side,σC (R) selects those tuples that satisfy condition C while σD(R) selects thosetuples that satisfy condition D. However, the union operator will eliminate duplicate tuples, namely those tuples that satisfy both condition C and D. Thus we are ensured that both sides are equivalent.As an example for bags, we only need to look at the union operator. If there are indeed tuples that satisfy both conditions C and D, then the right hand side will contain duplicate copies of those tuples. The left hand side, however, will only have one copy for each tuple of the original set of tuples.Exercise 5.2.1aExercise 5.2.1bExercise 5.2.1cExercise 5.2.1dExercise 5.2.1eExercise 5.2.1fExercise 5.2.1gExercise 5.2.1hExercise 5.2.1iExercise 5.2.1jExercise 5.2.1kExercise 5.2.1lExercise 5.2.1mExercise 5.2.1nExercise 5.2.2aApplying the δ operator on a relation with no duplicates will yield the same relation. Thus δ is idempotent.Exercise 5.2.2bThe result of πis a relation over the list of attributes L. Performing theLprojection again will return the same relation because the relation only contains the list of attributes L. Thus πis idempotent.LExercise 5.2.2cis a relation where condition C is satisfied by every tuple. The result of σCPerforming the selection again will return the same relation because the relation only contains tuples that satisfy the condition C. Thus σisC idempotent.Exercise 5.2.2dThe result of γis a relation whose schema consists of the groupingLattributes and the aggregated attributes. If we perform the same grouping operation, there is no guarantee that the expression would make sense. The grouping attributes will still appear in the new result. However, the aggregated attributes may or may not appear correctly. If the aggregated attribute is given a different name than the original attribute, thenwould not make sense because it contains an aggregation for an performing γLattribute name that does not exist. In this case, the resulting relation would,according to the definition, only contain the grouping attributes. Thus, γLis not idempotent.Exercise 5.2.2eThe result of τ is a sorted list of tuples based on some attributes L. If Lis not the entire schema of relation R, then there are attributes that are not sorted on. If in relation R there are two tuples that agree in all attributes L and disagree in some of the remaining attributes not in L, then it is arbitrary as to which order these two tuples appear in the result. Thus, performing the operation τ multiple times can yield a different relation where these two tuples are swapped. Thus, τ is not idempot ent.Exercise 5.2.3If we only consider sets, then it is possible. We can take π(R) and do aAproduct with itself. From this product, we take the tuples where the two columns are equal to each other.If we consider bags as well, then it is not possible. Take the case where we have the two tuples (1,0) and (1,0). We wish to produce a relation that contains tuples (1,1) and (1,1). If we use the classical operations of relational algebra, we can either get a result where there are no tuples or four copies of the tuple (1,1). It is not possible to get the desired relation because no operation can distinguish between the original tuples and the duplicated tuples. Thus it is not possible to get the relation with the two tuples (1,1) and (1,1).Exercise 5.3.1a)Answer(model) ← PC(model,speed,_,_,_) AND speed ≥ 3.00b)Answer(maker) ← Laptop(model,_,_,hd,_,_) AND Product(maker,model,_) ANDhd ≥ 100c)Answer(model,price) ← PC(model,_,_,_,price) AND Product(maker,model,_)AND maker=’B’Answer(model,price) ← Laptop(mode l,_,_,_,_,price) ANDProduct(maker,model,_) AND maker=’B’Answer(model,price) ← Printer(model,_,_,price) ANDProduct(maker,model,_) AND maker=’B’d)Answer(model) ← Printer(model,color,type,_) AND color=’true’ ANDtype=’laser’e)PCMaker(maker) ← Product(maker,_,type) AND type=’pc’LaptopMaker(maker) ← Product(maker,_,type) AND type=’laptop’Answer(maker) ← LaptopMaker(maker) AND NOT PCMaker(maker)f)Answer(hd) ← PC(model1,_,_,hd,_) AND PC(model2,_,_,hd,_) AND model1 <>model2g)Answer(model1,model2) ← PC(model1,speed, ram,_,_) ANDPC(model2,_speed,ram,_,_) AND model1 < model2h)FastComputer(model) ← PC(model,speed,_,_,_) AND speed ≥ 2.80FastComputer(model) ← Laptop(model,speed,_,_,_,_) AND speed ≥ 2.80Answer(maker) ← Product(maker,model1,_) AND Product(maker,mod el2,_) AND FastComputer(model1) AND FastComputer(model2) AND model1 <> model2i)Computers(model,speed) ← PC(model,speed,_,_,_)Computers(model,speed) ← Laptop(model,speed,_,_,_,_)SlowComputers(model) ← Computers(model,speed) ANDComputers(model1,speed1) AND speed < speed1FastestComputers(model) ← Computers(model,_) AND NOTSlowComputers(model)Answer(maker) ← Fast estComputers(model) AND Product(maker,model,_)j)PCs(maker,speed) ← PC(model,speed,_,_,_) AND Product(maker,model,_) Answer(maker) ← PCs(maker,spe ed) AND PCs(maker,speed1) ANDPCs(maker,speed2) AND speed <> speed1 AND speed <> speed2 AND speed1 <> speed2k)PCs(maker,model) ← Product(maker,model,type) AND type=’pc’Answer(maker) ← PCs(maker,model) AND PCs(maker,model1) ANDPCs(maker,model2) AND PCs(maker,model3) AND model <> model1 AND model <> model2 AND model1 <> model2 AND (model3 = model OR model3 = model1 ORmodel3 = model2)Exercise 5.3.2a)Answer(class,country) ← Classes(class,_,country,_,bore,_) AND bore ≥16b)Answer(name) ← Ships(name,_,launch ed) AND launched < 1921c)Answer(ship) ← Outcomes(ship,battle,result) AND battle=’DenmarkStrait’ AND result = ‘sunk’d)Answer(name) ← Classes(class,_,_,_,_,displacement) ANDShips(name,class,launched) AND displacement > 35000 AND launched > 1921e)Answer(nam e,displacement,numGuns) ←Classes(class,_,_,numGuns,_,displacement) AND Ships(name,class,_) ANDOutcomes (ship,battle,_) AND battle=’Guadalcanal’ AND ship=namef)Answer(name) ← Ships(name,_,_)Answer(name) ← Outcomes(name,_,_) AND NOT Answer(name)g)MoreThan One(class) ← Ships(name,class,_) AND Ships(name1,class,_) ANDname <> name1Answer(class) ← Classes(class,_,_,_,_,_) AND NOT MoreThanOne(class)h)Battleship(country) ← Classes(_,type,country,_,_,_) AND type=’bb’Battlecruiser(country) ← Classes(_,type,country,_,_,_) AND type=’bc’Answer(country) ← Battleship(country) AND Battlecruiser(country)i)Results(ship,result,date) ← Battles(name,date) ANDOutcomes(ship,battle,result) AND battle=nameAnswer(ship) ← Results(ship,result,date) AND Results(ship,_,date1) AND result=’damaged’ AND date < date1Exercise 5.3.3A nswer(x,y) ← R(x,y) AND z = zExercise 5.4.1aAnswer(a,b,c) ← R(a,b,c)Answer(a,b,c) ← S(a,b,c)Exercise 5.4.1bAnswer(a,b,c) ← R(a,b,c) AND S(a,b,c)Exercise 5.4.1cAnswer(a,b,c) ← R(a,b,c) AND NOT S(a,b,c)Exercise 5.4.1dUnion(a,b,c) ← R(a,b,c)Union(a,b,c) ← S(a,b,c)Answer(a,b,c) ← Union(a,b,c) AND NOT T(a,b,c)Exercise 5.4.1eJ(a,b,c) ← R(a,b,c) AND NOT S(a,b,c)K(a,b,c) ← R(,a,b,c) AND NOT T(a,b,c)Answer(a,b,c) ← J(a,b,c) AND K(a,b,c)Exercise 5.4.1fAnswer(a,b) ← R(a,b,_)Exercise 5.4.1gJ(a,b) ← R(a,b,_)K(a,b) ← S(_,a,b)Answer(a,b) ← J(a,b) AND K(a,b)Exercise 5.4.2aAnswer(x,y,z) ← R(x,y,z) AND x = yExercise 5.4.2bAnswer(x,y,z) ← R(x,y,z) AND x < y AND y < z Exercise 5.4.2cAnswer(x,y,z) ← R(x,y,z) AND x < yAnswer(x,y,z) ← R(x,y,z) AND y < zExercise 5.4.2dChange: NOT(x < y OR x > y)To: x ≥ y AND x ≤ yThe above simplifies to x = yAnswer(x,y,z) ← R(x,y,z) AND x = yExercise 5.4.2eChange: NOT((x < y OR x > y) AND y < z)NOT(x < y OR x > y) OR y ≥ z(x ≥ y AND x ≤ y) OR y ≥ zTo: x = y OR y ≥ zAnswer(x,y,z) ← R(x,y,z) AND x = yAnswer(x,y,z) ← R(x,y,z) AND y ≥ zExercise 5.4.2fChange: NOT((x < y OR x < z) AND y < z)NOT(x < y OR x < z) OR y ≥ zTo: (x ≥ y AND x ≥ z) OR y ≥ zAnswer(x,y,z) ← R(x,y,z) AND x ≥ y AND x ≥ zAnswer(x,y,z) ← R(x,y,z) AND y ≥zExercise 5.4.3aAnswer(a,b,c,d) ← R(a,b,c) AND S(b,c,d)Exercise 5.4.3bAnswer(b,c,d,e) ← S(b,c,d) AND T(d,e)Exercise 5.4.3cAnswer(a,b,c,d,e) ← R(a,b,c) AND S(b,c,d) AND T(d,e)Exercise 5.4.4a)Answer(rx,ry,rz,sx,sy,sz) ← R(rx,ry,rz) AND S(sx,sy,sz) AND rx = syb)Answer(rx,ry,rz,sx,sy,sz) ← R(rx,ry,rz) AND S(sx,sy,sz) AND rx < sy ANDry < szc)Answer(rx,ry,rz,sx,sy,s z) ← R(rx,ry,rz) AND S(sx,sy,sz) AND rx < syAnswer(rx,ry,rz,sx,sy,sz) ← R(rx,ry,rz) AND S(sx,sy,sz) AND ry < szd)Answer(rx,ry,rz,sx,sy,sz) ← R(rx,ry,rz) AND S(sx,sy,sz) AND rx = sye)Answer(rx,ry,rz,sx,sy,sz) ← R(rx,ry,rz) AND S(sx,sy,sz) AND rx = syAnswe r(rx,ry,rz,sx,sy,sz) ← R(rx,ry,rz) AND S(sx,sy,sz) AND ry ≥ szf)Answer(rx,ry,rz,sx,sy,sz) ← R(rx,ry,rz) AND S(sx,sy,sz) AND rx ≥ syAND rx ≥ szAnswer(rx,ry,rz,sx,sy,sz) ← R(rx,ry,rz) AND S(sx,sy,sz) AND ry ≥ sz Exercise 5.4.5aR1 := πx,y(Q R) Exercise 5.4.5bR1 := ρR1(x,z)(Q)R2 := ρR2(z,y)(Q)R3 := πx,y (R1(R1.z = R2.z)R2)Exercise 5.4.5cR1 := πx,y(Q R)R2 := σx < y(R1)。
第5章习题解答1.选择题(1)为数据表创建索引的目的是_______。
A.提高查询的检索性能B.节省存储空间C.便于管理D.归类(2)索引是对数据库表中_______字段的值进行排序。
A.一个B.多个C.一个或多个D.零个(3)下列_______类数据不适合创建索引。
A.经常被查询搜索的列B.主键的列C.包含太多NULL值的列D.表很大(4)有表student(学号, 姓名, 性别, 身份证号, 出生日期, 所在系号),在此表上使用_______语句能创建建视图vst。
A.CREATE VIEW vst AS SELECT * FROM studentB.CREATE VIEW vst ON SELECT * FROM studentC.CREATE VIEW AS SELECT * FROM studentD.CREATE TABLE vst AS SELECT * FROM student(5)下列_______属性不适合建立索引。
A.经常出现在GROUP BY字句中的属性B.经常参与连接操作的属性C.经常出现在WHERE字句中的属性D.经常需要进行更新操作的属性(6)下面关于索引的描述不正确的是_______。
A.索引是一个指向表中数据的指针B.索引是在元组上建立的一种数据库对象C.索引的建立和删除对表中的数据毫无影响D.表被删除时将同时删除在其上建立的索引(7)SQL的视图是_______中导出的。
A.基本表B.视图C.基本表或视图D.数据库(8)在视图上不能完成的操作是_______。
A.更新视图数据B.查询C.在视图上定义新的基本表D.在视图上定义新视图(9)关于数据库视图,下列说法正确的是_______。
A.视图可以提高数据的操作性能B.定义视图的语句可以是任何数据操作语句C.视图可以提供一定程度的数据独立性D.视图的数据一般是物理存储的(10)在下列关于视图的叙述中,正确的是_______。
第5章数据库完整性与安全性1.什么是数据库的完整性?什么是数据库的安全性?两者之间有什么区别和联系?解:数据库的完整性是指数据库中数据的正确性、有效性和相容性,其目的是防止不符合语义、不正确的数据进入数据库,从而来保证数据库系统能够真实的反映客观现实世界。
数据库安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。
数据的完整性和安全性是两个不同的概念,但是有一定的联系: 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进单位、束。
静态元组①INSERT③)执行该操作,或级连(CASCADE)执行其它操作,进行违约处理以保证数据的完整性。
4.现有以下四个关系模式:供应商(供应商编号,姓名,电话,地点),其中供应商编号为主码;零件(零件编号,零件名称,颜色,重量),其中零件编号为主码;工程(工程编号,工程名称,所在地点),其中工程编号为主码;供应情况(供应商编号,零件编号,工程编号,数量),其中供应商编号,零件编号,工程编号为主码用SQL语句定义这四个关系模式,要求在模式中完成以下完整性约束条件的定义:①定义每个模式的主码;②定义参照完整性;③定义零件重量不得超过100千克。
解:CREATESCHEMASupplier_schemaCREATETABLESupplier(SnoCHAR(5)PRIMARYKEY,SnameCHAR(20)NOTNULL,PhoneCHAR(13),AddressCHAR(30));5.在关系数据库系统中,当操作违反实体完整性、参照完整性和用户自定义的完整性约束条件时,一般是如何分别进行处理的。
解:(1)按实体完整性规则自动进行检查。
包括:①检查主码值是否唯一,如果不唯一则拒绝插入或修改。
②检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。
(2)按参照完整性检查,违约处理的策略如下:①拒绝(NOACTION)执行。
第五章一.选择题1.下列关于SQL语言索引(Index)的叙述中,哪一条是不正确的(C)。
A.索引是外模式B.一个基本表上可以创建多个索引C.索引可以加快查询的执行速度D.系统在存取数据时会自动选择合适的索引作为存取路径2.为了提高特定查询的速度,对SC(S#,C#,DEGREE)关系创建唯一性索引,应该创建在哪一个属性(组)上?(A)A.(S#,C#)B. (S#,DEGREE)C. (C#,DEGREE)D. DEGREE3.设S_AVG(SNO,AVG_GRADE)是一个基于关系SC 定义的学号和他的平均成绩的视图。
下面对该视图的操作语句中,(A)是不能正确执行的。
Ⅰ. UODATE S_AVG SET AVG_GRADE=90 WHERE SNO=’2004010601’Ⅱ. SELECT SNO,AVG_GRADE FROM S_AVG WHERE SNO=’2004010601’A . 仅Ⅰ B. 仅Ⅱ C. 都能 D.都不能4.在视图上不能完成的操作是(C)。
A.更新视图B. 查询C. 在视图上定义新的基本表D. 在视图上定义新视图5.在SQL语言中,删除一个视图的命令是(B)。
A.DELECTB. DROPC. CLEARD. UNION6.为了使索引建的值在基本表中唯一,在创建索引的语句中应使用保留字()。
A.UNIQUEB. COUNTC. DISTINCTD.UNION7.创建索引是为了(A)。
A.提高存取速度B. 减少I/OC. 节约空间D. 减少缓冲区个数8.在关系数据库中,视图(View )是三级模式结构中的(D)。
A.内模式B. 模式C. 存取模式D. 外模式9.视图是一个“虚表”,视图的构造基于(A)。
Ⅰ.基本表Ⅱ. 视图Ⅲ. 索引10.已知关系:STUDENT(Sno,Sname,Grade),以下关于命令”CREATE INDEX S index ON STUDENT(Grade)”的描述中,正确的是(B)。
第一章:1、数据库的概念:P4数据库系统的概念: P59、数据模型的三个要素:数据结构,数据操作,完整性约束。
13、码:唯一标识实体的属性集。
16、模式:P29外模式:P29内模式:P2917、物理独立性:当数据库的存储结构改变时,对模式/内模式映象作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。
逻辑独立性:当数据库的模式改变时,对外模式/模式的映象作相应改变,可以使外模式保持不变,从而应用程序也不必改变,保证了数据与程序的逻辑独立性。
18、数据库系统的构成:数据库系统通常由数据库,数据库管理系统(及开发工具)、应用系统和数据库管理员构成。
第二章:1、关系模型的三个组成部分:关系数据结构、关系操作集合、关系完整性约束。
2、关系数据语言的分类:关系代数语言,关系演算语言,具有关系代数和关系演算双重特点的语言3、候选码:关系中能唯一标识一个元组的属性组。
主码:若候选码有多个,则选其中一个作为主码。
外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外码。
(或者参照课本P50,定义2.5)5、答:实体完整性是指在基本表中,主属性不能取空值且取值唯一。
参照完整性是指在基本表中,外码可以是空值或者另一个关系主码的有效值。
6、(1)πSno(σJno=’J1’(SPJ))(2) πSno(σJno=’J1’∧ Pno=’P1’(SPJ))(3) πSno(σJno=’J1’∧ Color=’红’(SPJ∞P))(4)πJno(J)—πJno (σCity=’天津’∧ Color=’红’(S∞SPJ∞P)) (5)πJno,Pno(SPJ)÷πPno(σSno=’S1’(SPJ))第三章:4、建立S表Create table S(SNO CHAR(10) PRIMARY KEY,SNAME CHAR(10),STATUS CHAR(2),CITY CHAR(10));5、(1)select sname,cityFrom S;(2)select pname,color,weightFrom p;(3) select JnoFrom SPJWhere SNO=’S1’;(4)select p.pname,spj.qtyFrom p,spjWhere p.pno=spj.pno and spj.jno=’j2’;(5) select distinct pnoFrom spj,sWhere spj.sno=s.sno and city=’上海’;(6) select jnameFrom j,spj,sWhere j.jno=spj.jno and spj.sno=s.sno and s.city=’上海’;(7) select jnoFrom jWhere jno not in(select spj.jnoFrom spj,sWhere spj.sno=s.sno and s.city=’天津’);或者:select jnoFrom jWhere not exists(select spj.jnoFrom spj,sWhere spj.jno=j.jno and spj.sno=s.sno and s.city=’天津’);(8) update pSet color=’蓝’Where color=’红’;(9) update spjSet sno=’s3’Where sno=’s5’ and jno=’j4’ and pno=’p6’;(10) deleteFrom spjWhere sno=’s2’;deleteFrom sWhere sno=’s2’;(11)insert into spjValues(‘s2’,’j6’,’p4’,200)8、不是所有的视图都可以更新。
[习题 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 A
B →
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.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 }
+
②试写出所有左部是
B 的函数依赖(即形为“ B →?”)。
+
解:①从已知的 F ,可推出 BD → BCD ,所以 BD 的闭包( BD ) = BCD 。
+
B → Φ,B → B,B →C,B → BC
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 ?并说明理由。
解: (1)已知 F ={ B →C , C →A }
π
→
而 π
→
A }, AC ( F )={ C A }
AB ( F )={ B
显然,这个分解丢失了 FD
B →
C 。
( 2)用测试过程可以知道,分解
相对于 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 :(队员编号,比赛场次)→进球数
从上述三个FD 可知道, R 的关键码为(队员编号,比赛场次)。
(2)从( 1)可知, R 中存在下面两个 FD:
(队员编号,比赛场次)→ (球队名,队长名 )
队员编号→ (球队名,队长名)
显然,其中第一个FD 是一个局部依赖,因此R 不是 2NF 模式。
对 R 应该进行分解由第二个FD 的属性可构成一个模式,即
R1(队员编号,球队名,队长名);
另一个模式由R 的属性集去掉第二个FD 属性右边的属性组成,即
R2(队员编号,比赛场次,进球数)。
R1 和 R2 都是 2NF 模式,因此分解为2NF 模式集为{ R1, R2}
(3) R2(队员编号,比赛场次,进球数)中FD 是
(队员编号,比赛场次)→进球数
关键码为(队员编号,比赛场次),可见 R2 已是 3NF 。
R1(队员编号,球队名,队长名)中,FD 有两个:
队员编号球队名
→
→
球队名
队长名
—2
关键码为队员编号,可见存在传递依赖,因此R1 不是 3NF 模式。
对 R1 应分解成两个模式: R11(队员编号,球队名), R12(球队名,队长
名)。
这两个模式都是 3NF 模式。
因此, R 分解成 3NF 模式集为{ R11, R12, R2}。
5.19 设有关系模式
R(职工名,项目名,工资,部门名,部门经理)
如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。
①试写出关系模式R 的基本 FD 和关键码。
②说明 R 不是 2NF 模式的理由,并把R 分解成 2NF 模式集。
③进而把R 分解成 3NF 模式集,并说明理由。
解:( 1) R 的基本 FD 有三个:
(职工名,项目名)→工资
项目名→部门名
部门名→部门经理
关键码为(职工名,项目名)。
( 2)根据( 1), 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}。
—3。