数据库原理及应用习题参考答案(43页).doc
-数据库原理及应用习题参考答案-第 39 页 数据库原理及应用习题参考答案习题1 1-1 文件系统阶段的数据管理有哪些特点? 答:文件系统阶段主要有5个特点:数据以“文件”形式长期保存;数据的逻辑结构与物理结构有了区别;文件组织已多样化;数据面向应用;对数据的操作以记录为单位。 1-2 文件系统阶段的数据管理有些什么缺陷?试举例说明。 答:主要有3个缺陷:数据冗余;数据不一致性;数据联系弱。 例如学校里教务处、财务处、保健处建立的文件中都有学生详细资料,如联系电话,家庭住址等。这就是“数据”冗余;如果某个学生搬家,就要修改3个部门文件中的数据,否则会引起同一数据在3个部门中不一致;产生上述问题的原因是这3个部门的文件中数据没有联系。 1-3 数据库阶段的数据管理有哪些特色? 答:主要有5个特点:采用数据模型可以表示复杂的数据结构;有较高的数据独立性; 为用户提供了方便的用户接口;提供了4个方面的数据控制功能;对数据的操作以数据项为 单位,增加了系统的灵活性。 1-4 什么是数据独立性?在数据库中有哪两级独立性? 答:数据独立性是指应用程序与DB的数据结构之间的相互独立。在物理结构改变时,尽量不影响应用程序,称为物理独立性;在逻辑结构改变时,尽量不影响应用程序,称之为逻辑数据独立性。 1-5 试解释DB、DBMS和DBS三个概念。 答:DB是长期存储在计算机内、有组织的、统一管理的相关数据的集合。 DBMS是位于用户与0S之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法。 DBS是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件 和数据资源组成的系统,即采用数据库技术的计算机系统。 1-6 SQL Server 2005有哪些数据类型? 答:SQL Server中数据类型分为整型、浮点型、二进制数据型、逻辑型、字符型、文本型、图形型、日期时间型、货币型、自定义类型、可变数据类型和表数据类型。 1-7 列举SQL Server 2005中新增的主要功能。 答:SQL Server 2005中新增的主要功能有: Notification Services增强功能; Reporting Services增强功能,其中包括:报表功能的增强功能、Reporting Services设计时增强功能、Reporting Services可编程性的增强功能、Reporting Services可管理性和部署的增强功能; 新增的Service Broker以实现SQL Server中的消息传递方面具有以下优势:高伸缩性、消息协调、排序和锁定、集成数据库数据、集成数据库安全性; 数据库引擎增强功能; 数据访问接口方面的增强功能; SQL Server Analysis Services(SSAS)的增强功能; Integration Services的增强功能; 在可管理性、可用性、可编程性、移动性、可伸缩性和性能方面提供了改进。 工具和实用工具增强功能; 第 1 页1-8 SQL Server 2005的实用程序和常用工具有哪些? 答:SQL Server 2005给出的常用应用程序和实用工具有:企业管理器、查询分析器、商业智能开发平台、SQL Server分析器、SQL Server 2005数据库引擎优化程序、SQL Server 配置管理器等。 习题2 2-1 名词解释 逻辑数据 物理数据 联系的元数 1:1联系 1:N联系 M:N联系 数据模型 概念数据模型 外模式 概念模式 内模式 外模式/模式映象 模式/内模式映象 数据独立性 物理数据独立性 逻辑数据独立性 答:逻辑数据:指程序员或用户用以操作的数据形式。 物理数据:指存储设备上存储的数据。 联系的元数:与一个联系有关的实体集个数,称为联系的元数。 1:1联系:如果实体集El中每个实体至多和实体集E2中的一个实体有联习,反之亦然,那么El和E2的联系称为“l:1联系”。 1:N联系:如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,而E2中每个实体至多和El中一个实体有联系,那么El和E2的联系是“1:N联系”。 M:N联系:如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,反之亦然,那么El和E2的联系称为“M:N联系”。 数据模型:能表示实体类型及实体间联系的模型称为“数据模型”。 概念数据模型:独立于计算机系统、完全不涉及信息在计算机中的表示、反映企业组织所关心的信息结构的数据模型。 外模式:是用户用到的那部分数据的描述。 概念模式:数据库中全部数据的整体逻辑结构的描述。 内模式:DB在物理存储方面的描述。 外模式/模式映象:用于定义外模式和概念模式之间数据结构的对应性。 模式/内模式映象:用于定义概念模式和内模式之间数据结构的对应性。 数据独立性:应用程序和DB的数据结构之间相互独立,不受影响。 物理数据独立性:在DB的物理结构改变时,尽量不影响应用程序。 逻辑数据独立性:在DB的逻辑结构改变时,尽量不影响应用程序。 2-2 逻辑记录与物理记录、逻辑文件与物理文件有哪些联系和区别? 答:逻辑数据是用户用以操作的数据形式,是抽象的概念化数据。物理数据是实际存放在存储设备上的数据。 逻辑数据与物理数据在结构上可以差别很大,需通过两级映象来进行数据传输和格式转换。 从以上的解释可以看出,逻辑记录和逻辑文件是用户在程序中使用的记录和文件,而物理记录和物理文件是指磁盘上的记录和文件。逻辑记录、文件与物理记录、文件在结构、组成上可以有很大的差异,而数据库管理软件就是通过三级结构两级映象来实现逻辑数据与物理数据之间的转换。 2-3 试述ER模型、层次模型、网状模型、关系模型和面向对象模型的主要特点。 答:ER模型直接表示实体类型及实体间联系,与计算机系统无关,充分反映用户的需求,用户容易理解。 第 2 页层次模型的数据结构为树结构,记录之间联系通过指针实现,查询较快,但DML属于过程化的语言,操作复杂。 网状模型的数据结构为有向图,记录之间联系通过指针实现,查询较快,并且容易实现M:N联系,但DML属于过程化的语言,编程较复杂。 关系模型的数据结构为二维表格,容易为初学者理解。记录之间联系通过关键码实现。DML属于非过程化语言,编程较简单。 面向对象模型能完整描述现实世界的数据结构,具有丰富的表达能力,能表达嵌套、递归的数据结构。但涉及的知识面较广,用户较难理解,这种模型尚未普及。 2-4 数据之间的联系在各种结构数据模型中是怎么实现的? 答:在层次、网状模型中,数据之间的联系通过指针实现的;在关系模型中,数据之间联系通过外键和主键间联系实现的;在面向对象模型中,数据之间嵌套、递归联系通过对象标识符(OID)实现的。 2-5 DB的三级模式结构描述了什么问题?试详细解释。 答:DB的三级模式结构是对数据的三个抽象级别,分别从外部(用户)级、概念级和内部级去观察数据库。 外部级是用户使用的局部数据库的逻辑结构,其描述称为外模式。 概念级是DB的整体逻辑结构,其描述称为概念模式。 内部级是DB的物理结构,其描述称为内模式。 2-6 试述概念模式在数据库结构中的重要地位。 答:数据按外模式的描述提供给用户,按内模式的描述存储在磁盘中,而概念模式提供了连接这蘧级的相对稳定的中间观点,并使得两级的任何一级的改变都不受另一级的牵制。 2-7 什么是数据独立性?其目的是什么? 数据库独立性是指应用程序与DB的数据结构之间相互独立。其目的是在物理结构改变或逻辑结构改变时,尽量不影响应用程序。 习题3 3-1 名词解释: 关系模式 关系实例 属性 元组 超键 候选键 主键 外键 实体完整性规则 参照完整性规则 答:关系模式:是对关系的描述,包括模式名、诸属性名、值域名和模式的主键。 关系实例:关系模式具体的值,称为关系实例。 属性:即字段或数据项,与二维表中的列对应。属性个数,称为元数。 元组:即记录,与二维表中的行对应。元组个数,称为基数。 超键:能惟一标识元组的属性或属性集,称为关系的超键。 候选键:不含有多余属性的超键,称为候选键。 主键:正在使用的、用于标识元组的候选键,称为主键。 外键:属性集F是模式S的主键,在模式R中也出现,那么称F是模式R的外键。 实体完整性规则:实体的主键值不允许是空值。 参照完整性规则:依赖关系中的外键值或者为空值,或者是相应参照关系中某个主键值。 3-2 为什么关系中的元组没有先后顺序,且不允许有重复元组? 答:由于关系定义为元组的集合,而集合中的元素是没有顺序的,因此关系中的元组也譬没有先后的顺序(对用户而言)。这样既能减少逻辑排序,又便于在关系数据库中引进集合论的理论。 第 3 页每个关系模式都有一个主键,在关系中主键值是不允许重复的。如果关系中有重复元组,那么其主键值肯定相等,起不了惟一标识作用,因此关系中不允许有重复元组。 3-3 外健值何时允许为空?何时不允许为空? 答:在依赖表中,当外键是主键的组成部分时,外键值不允许为空;否则外键值允许为空。 3-4 笛卡尔积、等值连接和自然连接三者之间有什么区别? 答:笛卡儿积是一个基本操作,而等值连接和自然连接是组合操作。 设关系R的元数为r,元组个数为m;关系S的元数为s。,元组个数为n。 那么,R×S的元数为r+s,元组个数为m×n; R S的元数也是r+s,但元组个数小于等于m×n; R S的元数小于等于r+s,元组个数也小于等于m×n: 3-5 设有关系R和S,如图3.18所示。 计算RS,R-S,RS,R×S,3,2(S),B<'5'(R),R S,R S。 2<2 3-6 设有关系R和S,如图3.19所示。计算R S,R S,A=C(R×S)。 答: A R.B R S A B C 3 2 7 4 6 5 2 4 7 7 3 3 ABC3 7 4 2 5 3 R S 图3.18 关系R和S 2<2 B<C A B a c d b b e BCb e b c a d R S 图3.19 关系R和S ij A B C 3 2 7 4 3 6 5 2 4 4 7 7 3 3 5 RS ABC3 2 4 6 5 4 7 7 3 R-S ABC7 2 3 RS R.AR.BR.CS.A S.B S.C 3 3 2 2 7 7 4 4 6 6 5 5 2 2 4 4 7 7 7 7 3 3 3 3 3 7 3 7 3 7 3 7 4 2 4 2 4 2 4 2 5 3 5 3 5 3 5 3 R×SC B 5 3 4 2 3,2(S) ABC7 42 43 3B<5(R) R.A R.BR.C S.A S.BS.C7 2 3 3 4 5 R S S.B C a a b b b b c d ABCa a b b c d R S第 4 页3-7 设教务管理数据库中有三个关系 S(SNO,SNAME,AGE,SEX,SDEPT) SC(SNO,CNO,GRADE) C(CNO,CNAME,CDEPT,TNAME) 试用关系代数表达式表示下列查询语句: 检索LIU老师所授课程的课程号、课程名。 检索年龄大于23岁的男学生的学号与姓名。 检索学号为S3学生所学课程的课程名与任课教师名。 检索至少选修LIU老师所授课程中一门课的女学生姓名。 检索WANG同学不学的课程的课程号。 检索至少选修两门课程的学生学号。 检索全部学生都选修的课程的课程号与课程名。 检索选修课程包含LIU老师所授课程的学生学号。 解: C#,CNAME(TEACHER=LIU(C) S#,SNAME(AGE>23SEX=M(SC) CNAME,TEACHER(S#=S3(SC C) SNAME(SEX=FTEACHER=LIU(S SC C) C#(C)-C#(SNAME=WANG(S SC) 1(1=425(SC×SC) C#,CNAME(C (S#,C#(SC)÷S#(S) S#,C#(SC)÷C#(TEACHER=LIU(C) 3-8 在3.7题的三个关系中,用户有一查询语句:检索数学系的学生选修计算机系开设的课程的课程名和任课教师姓名。 试写出该查询的关系代数表达式。 试写出该查询优化的关系代数表达式。 画出该查询初始的关系代数表达式的语法树。 使用3.5.3节的优化算法,对语法树进行优化,并画出优化后的语法树。 解: CNAME,TEACHER(DEPT=数学系(S SC C) 设L1=S#(DEPT=数学系(S),L2=S#,C#(SC),则优化的关系代数表达式为: AR.BS.BC a c d b b e e b b a c d A=C(R×S) 第 5 页CNAME,TEACHER(SC.C#=C.C#(SC.C#(S.S#=SC.S#(L1×L2)×C) 查询初始的关系代数表达式可表达为: CNAME,TEACHER(DEPT=数学系(L(S.S#=SC.S#SC.C#=C.C#(S×SC)×C) 此处L为S、SC、C中的全部属性(公共属性只取一次)。 优化后的语法树为 3-9 为什么要对关系代数表达式进行优化? 答:关系代数表达式由关系代数操作组合而成。操作中,以笛卡尔积和连接操作最费时间,并生成大量的中间结果。如果直接按表达式书写的顺序执行,必将花费很多时间,并生成大量的中间结果,效率较低。在执行前,由DBMS的查询子系统先对关系代数表达式进行优化,尽可能先执行选择和投影操作,以便减少中间结果,节省时间。 优化工作是由DBMS做的,用户书写时不必关心优化一事,仍以简练的形式书写。 习题4 4-1 名词解释 基本表 视图 实表 相关子查询 联接查询 嵌套查询 交互式SQL 嵌入式SQL 游标 答: 基本表:实际存储在数据库中的表,称为基本表。 CL S.S#=SC.S#SC.C#=C.C#DEPT=数学系CNAME,TEACHER×S SCC× DEPT=数学系CNAME,TEACHER×S SC 第 6 页视图:是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是数据库中只存放视图的定义而不存放视图的数据。 实表:是对基本表的别称。 相关子查询:SELECT语句嵌套时,子查询中查询条件依赖于外层查询中的值,因此子查询要反复求值供外层查询使用。这种子查询称为相关子查询。 连接查询:查询时要从多个基本表中提取数据,此时把多个基本表写在同一层的FROM子句中,这种查询形式称为连接查询。 嵌套查询:查询时要从多个基本表中提取数据,此时把多个基本表分别放在不同层次上的FROM子句中,这种查询形式称为嵌套查询。 交互式SQL:在终端交互方式使用的SQL语言。 嵌入式SQL:嵌入在高级语言的程序中使用的SQL语言。 游标:游标是与某一查询相联系的符号名。游标有游标关系和游标指针两层含义。在游标打开时,游标(指针)指向查询结果的第一个记录之前。 4-2 对于教务管理数据库的三个基本表 S(SNO,SNAME, SEX, AGE,SDEPT) SC(SNO,CNO,GRADE) C(CNO,CNAME,CDEPT,TNAME) 试用SQL的查询语句表达下列查询: 检索LIU老师所授课程的课程号和课程名。 检索年龄大于23岁的男学生的学号和姓名。 检索学号为200915146的学生所学课程的课程名和任课教师名。 检索至少选修LIU老师所授课程中一门课程的女学生姓名。 检索WANG同学不学的课程的课程号。 检索至少选修两门课程的学生学号。 检索全部学生都选修的课程的课程号与课程名。 检索选修课程包含LIU老师所授课程的学生学号。 解: SELECT C#,CNAME FROM C WHERE TEACHER=LIU; SELECT S#,SNAME FROM S WHERE AGE>23 AND SEX=M; SELECT CNAME,TEACHER FROM SC,C WHERE SC.C#=C.C# AND S#=200915146 SELECT SNAME (连接查询方式) FROM S,SC,C WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=F AND TEACHER=LIU; 或: SELECT SNAME (嵌套查询方式) FROM S WHERE SEX=FAND S# IN (SELECT S# 第 7 页FROM SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER=LIU) 或: SELECT SNAME (存在量词方式) FROM S WHERE SEX=F AND EXISTS(SELECT* FROM SC WHERE SC.S#=S.S# AND EXISTS(SELECT * FROM C WHERE C.C#=SC.C# AND TEACHER=LIU) SELECT C# FROM C WHERE NOT EXISTS (SELECT * FROM S,SC WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=WANG); SELECT DISTINCT X.S# FROM SC AS X,SC AS Y WHERE X.S#=Y.S# AND X.C#!=Y.C#; SELECT C#.CNAME FROM C WHERE NOT EXISTS (SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE S#=S.S# AND C#=C.C#); SELECT DISTINCT S# FROM SC AS X WHERE NOT EXISTIS (SELECT * FROM C WHERE TEACHER=LIU AND NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.S#=X.S# AND Y.C#=C.C#); 4-3 试用SQL查询语句表达下列对4.2题中教务管理数据库的三个基本表S、SC、C查询: 统计有学生选修的课程门数。 求选修4号课程的学生的平均年龄。 求LIU老师所授课程的每门课程的学生平均成绩。 第 8 页 统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 检索学号比WANG同学大,而年龄比他小的学生姓名。 检索姓名以WANG打头的所有学生的姓名和年龄。 在SC中检索成绩为空值的学生学号和课程号。 求年龄大于女同学平均年龄的男学生姓名和年龄。 求年龄大于所有女同学年龄的男学生姓名和年龄。 解: SELECT COUNT(DISTINCT C#) FROM SC; SELECT AVG(AGE) FROM S,SC WHERE S.S#=SC.S# AND C#=4AND SEX=F; SELECT C.C#,AVG(GRADE) FROM SC,C WHERE SC.C#=C.C# AND TEACHER=LIU; SELECT C#,COUNT(S#) FROM SC GROUP BY C# HAVING COUNT(*)>10 ORDER BY 2 DESC,1; SELECT SNAME FROM S WHERE S#>ALL(SELECT S# FROM S WHERE SNAME=WANG AND AGE<ALL(SELECT AGE FROM S WHERE SNAME=WANG); SELECT SNAME,AGE FROM S WHERE SNAME LIKE WANG% SELECT S#,C# FROM SC WHERE GRADE IS NULL; SELECT SNAME,AGE FROM S WHERE SEX=MAND AGE>(SELECT AVG(AGE) FROM S WHERE SEX=F); SELECT SNAME,AGE FROM S WHERE SEX=MAND AGE>ALL(SELECT AGE FROM S 第 9 页WHERE SEX=F); 4-4 试用SQL更新语句表达对4.2给出的教务管理数据库中三个基本表S、SC、C进行如下更新操作: 往基本表S中插入一个学生元组(200912143,张晶,21)。 在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(SNO,SNAME,SEX)。 在基本表SC中删除尚无成绩的选课元组。 把张成民同学在SC中的选课记录全部删去。 把选修高等数学课程中不及格的成绩全部改为空值。 把低于总平均成绩的女同学成绩提高5%。 在基本表SC中修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。 解: INSERT INTO S(S#,SNAME,AGE) VALUES(200912143,张晶,21); INSERT INTO STUDENT(SNO,SNAME,SEX) SELECT S#,SNAME,SEX FROM S WHERE S# IN (SELECT S# FROM SC WHERE 80<=ALL(SELECT GRADE FROM SC GROUP BY S#); DELETE FROM SC WHERE GRADE IS NULL; DELETE FROM SC WHERE S# IN(SELECT S# FROM S WHERE SNAME=张民) UPDATE SC SET GRADE=NULL WHERE GRADE<60 AND C# IN(SELECT C# FROM C WHERE CNAME=高等数学); UPDATE SC SET GRADE=GRADE*1.05 WHERE S# IN(SELECT S# FROM S WHERE SEX=F) AND GRADE<(SELECT AVG(GRADE) FROM SC); 用两个UPDATE语句实现: UPDATE SC 第 10 页SET GRADE=GRADE*1.04 WHERE C#=4AND GRADE>75; UPDATE SC SET GRADE=GRADE*1.05 WHERE C#=4AND GRADE<=75; 注意:这两个UPDATE语句的顺序不能颠倒。 4-5 假设某“仓库管理”关系模型有下列五个关系模式: 零件PART(PNO,PNAME,COLOR,WEIGHT) 项目PROJECT(JNO,JNAME,JDATE) 供应商SUPPLIER(SNO,SNAME,SADDR) 供应P_P(JNO,PNO,TOTAL) 采购P_S(PNO,SNO,QUANTITY) 试用SQL DDL语句定义上述五个基本表,并说明主键和外键。 试将PROJECT、P_P、PART三个基本表的自然联接定义为一个视图VIEW1, PART、P_S、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。 试在上述两个视图的基础上进行数据查询: 检索上海的供应商所供应的零件的编号和名字。 检索项目J4所用零件的供应商编号和名字。 解: CREATE TABLE PART (PNO CHAR(6),PNAME CHAR(10) NOT NULL,COLOR CHAR(6),WEIGHT FLOAT(6),PRIMARY KEY(PNO); CREATE TABLE PROJECT (JNO CHAR(6),JNAME CHAR(12)NOT NULL,DATE DATE,PRIMARY KEY(JNO); CREATE TABLE SUPPLIER (SNO CHAR(8),SNAME CHAR(12)NOT NULL,SADDR VARCHAR(30),PRIMARY KEY(SNO); CREATE TABLE P_P (JNO CHAR(6),PNO CHAR(6),TOTAL INTEGER,PRIMARY KEY(JNO,PNO); FOREIGN KEY(JNO) REFERENCES PROJECT(JNO), FOREIGN KEY(PNO) REFERENCES PART(PNO); CREATE TABLE P_S (PNO CHAR(6),SNO CHAR(8),QUANTITY INTEGER,PRIMARY KEY(PNO,SNO) FOREIGN KEY(PNO) REFERENCES PART(PNO), FOREIGN KEY(SNO) REFERENCES SUPPLIER(SNO); CREATE VIEW VIEWl AS SELECT A.JNO,JNAME,DATE,C.PNO,PNAME,COLOR,WEIGHT,TOTAL FROM PROJECT A,P_P B,PART C WHERE A.JNO=B.JNO AND B.PNO=C.PNO; CREATE VIEW VIEW2 AS SELECT A.PNO,PNAME,COLOR,WEIGHT,C.SNO,SNAME,SADDR,QUANTITY FROM PART A,P_S B,SUPPLIER C WHERE A.PNO=B.PNO AND B.SNO=C.SNO; 第 11 页SELECT PNO,PNAME FROM VIEW2 WHERE SADDR LIKE 上海; SELECT SNO,SNAME FROM VIEWl,VIEW2 WHERE VIEWl.PNO=VIEW2.PNO AND JNO=J4; 4-6 对于教务管理数据库中基本表SC,已建立下列视图: CREATE VIEW S_GRADE(SNO,C_NUM,AVG_GRADE) AS SELECT SNO,COUNT(CNO),AVG(GRADE) FROM SC GROUP BY SNO; 试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操 作: SELECT * FROM S_GRADE SELECT SNO,C_NUM FROM S_GRADE WHERE AVG_GRADE>80; SELECT SNO,AVG_GRADE FROM S_GRADE WHERE C_NUM>(SELECT C_NUM FROM S_GRADE SNO=200912121); UPDATE S_GRADE SET C_NUM=C_NUM+1 WHERE SNO=200915122 DELETE FROM S_GRADE WHERE C_NUM>4; 答: 允许查询。相应的操作如下: SELECT SNO,COUNT(CNO) AS C_NUM,AVG(GRADE) AS AVG_GRADE FROM SC GROUP BY SNO; 允许查询。相应的操作如下: SELECT SNO,COUNT(CNO)AS C_NUM FROM SC GROUP BY SNO HAVING AVG(GRADE)>80; 允许查询。相应的操作如下: SELECT SNO,AVG(GRADE) AS AVG_GRADE FROM SC GROUP BY SNO HAVING COUNT(CNO)>(SELECT COUNT(CNO) FROM SC GROUP BY SNO HAVING SNO=200912121); 第 12 页 不允许。C_NUM是对SC中的学生选修课程的门数进行统计,在未更改SC表时,要在视图S_GRADE中更改门数,是不可能的。 不允许。在视图S_GRADE中删除选修课程的门数在4门以上的学生元组,势必造成SC中这些学生学习元组的删除,这不一定是用户的原意,因此使用分组和聚合操作的视图,不允许用户执行更新操作。 4-7 预处理方式对于嵌入式SQL的实现有什么重要意义? 答:此时宿主语言的编译程序不必改动,只要提供一个SQL函数定义库,供编译时使用。预处理方式只是把源程序中的SQL语句处理成宿主语言的函数调用形式。 4-8 SQL的集合处理方式与宿主语言单记录处理方式之间如何协调? 答:用游标机制协调。把SELECT语句查询结果定义成游标关系,以使用文件的方式来使用游标关系。与游标有关的SQL语句有4个:游标定义,游标打开,游标推进,游标关闭。 4-9嵌入式SQL的DML语句何时不必涉及到游标?何时必须涉及到游标? 答:不使用游标的SQL语句有下面两种情况: INSERT、DELETE、UPDATE语句,只要加上前缀和结束标志,就能嵌入在宿主语言程序中使用; 对于SELECT语句,如果已知查询结果肯定是单元组,也可不必涉及游标操作。 使用游标的SQL语句有下面两种情况: 当SELECT语句查询结果是多个元组时,必须用游标机制把多个元组一次一个地传递给主程序处理: 对游标指向元组进行修改或删除操作时,也涉及到游标。 4.10 用T-SQL语句创建教务管理数据库(JWGL),在SQL Server 2005的查询分析器的环境中验证习题4.2、习题4.3和习题4.4的有关内容。 略。 习题5 5-1 解释下列名词 函数依赖 函数依赖集F的闭包F+ 最小依赖集 无损分解 保持函数依赖 1NF 2NF 3NF BCNF 答: 函数依赖:设有关系模式R(U),X和Y是属性集U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖(Functional Dependency,简记为FD)于X,记作XY。 函数依赖集F的闭包F+:被F逻辑蕴涵的函数依赖全体构成的集合,称为F的闭包,记为F+。 最小依赖集:设F是属性集U上的FD集,Fmin是F的最小依赖集,那么Fmin应满足下列四个条件:(Fmin)+=F+;每个FD的右边都是单属性;Fmin中没有冗余的FD;每个FD的左边没有冗余的属性。 无损分解:设关系模式R,F是R上的FD集,=Rl,Rk是R的一个分解。如果对R 中满足F的每一关系r,都有r= Ri(r),那么称分解相对F是“无损分解”。 保持函数依赖:设关系模式R,F是R上的FD分解,=R1,Rk是R的一个分解,如果有 1()ikRiFF+= k i=1第 13 页那么称分解p保持FD集F。 1NF:如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是1NF的模式。 2NF:如果R是1NF的模式,且每个非主属性完全函数依赖于R的候选键,那么称R是2NF的模式。 3NF:如果R是1NF的模式,且每个非主属性都不传递依赖于R的候选键,那么称R是3NF的模式。 BCNF:如果R是1NF的模式,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。 5-2 已知关系模式R(ABC),F是R上成立的FD集,F=AB,BC,试写出F的闭包F+。 解: 根据已知条件和推理规则,可知F+有43个FD: A AB AC ABC B C AA ABA ACA ABCA BB CC AB ABB ACB ABCB BC AC ABC ACC ABCC BBC AAB ABAB ACAB ABCAB BC AAC ABAC ACAC ABCAC BCB ABC ABBC ACBC ABCBC BCC AABC ABABC ACABC ABCABC BCBC 5-3 设关系模式R(ABCD),F是R上成立的FD集,F=AB,CB,则相对于F,试写出关系模式R的关键码。并说明理由。 解:R的关键码为ACD。因为从已知的F,只能推出ACDABCD。 5-4 设关系R(ABCDE)上FD集为F,并且F=ABC,CDE,BD,EA。求出R的候选键。 解:R的候选键有4个:A、E、CD和BC。 5-5 设关系模式R(ABC),F是R上成立的FD集,F=BC,CA,那么分解=AB,AC相对于F,是否无损分解和保持FD?并说明理由。 答:已知F=BC,CA,而AB(F)=BA,AC(F)=CA,显然这个分解丢失了FD:BC。 对于保持无损分解: 无a行,所以是有损分解。 5-6 设关系模式R(ABCD),F是R上成立的FD集,F=AB,BC,AD,DC,=AB,AC,BD是R的一个分解。 相对于F,是无损分解吗?为什么? 试求F在的每个模式上的投影。 保持F吗?为什么? 答: 用