3.设关系模式R(A,B,C),F是R上成立的FD集,有F={ A→C,B→C }。 此题需将题目改为:
设关系模式R(A,B,C),F是R上成立的FD集,有F={ A→B,B→C }。 (1)试说明为什么R不是3NF模式?
由于R的主码为A,存在传递函数依赖:A→B,B→C;因此R不属于第三范式。 (2)试分析模式R的数据冗余问题。 关系R中的C属性会存在在数据冗余。 (3)试把R分解成3NF模式集。
分解成3NF模式集:R1(A,B);R2(B,C)。
4.写出关系模式规范化的步骤。
1NF(消除非主属性对码的部分函数依赖)→2NF(消除非主属性对码的传递函数依赖)→ 3NF(消除主属性对码的部分和传递函数依赖)→BCNF
5.试述模式分解时考虑无损连接性和保持函数依赖的意义。
一个关系分解为多个关系,相应地原来存储在一张二维表内的数据就要分散存储到多张二维表中,要使这个分解有意义,起码的要求是后者不能丢失前者的信息,如果一个分解具有无损连接性,则它能够保证不丢失信息。而如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。
第四章 习 题
一、单项选择题
1.在SQL中,与关系代数中的投影运算对应的子句是(A ) A SELECT B FROM C WHERE D ORDER BY 2. 在SQL的语句中,ALTER的作用是( C) A 删除基本表 B 修改基本表中的数据 C 修改基本表的结构 D 修改视图
3. 用SQL语言描述“在教师表中查找女教师的全部信息”,以下描述正确的是( C )
A SELECT FROM 教师表 IF(性别=?女?) B SELECT 性别FROM 教师表 IF(性别=?女?) C SELECT * FROM 教师表 WHERE(性别=?女?) D SELECT * FROM 性别WHERE(性别=?女?) 4. 在基本SQL语言中,不可以实现( D)
A 定义视图 B 定义基本表 C 查询视图和基本表 D 并发控制 5. SELECT语句执行的结果是( B) A 数据项 B 元组 C 表 D 数据库 6. 在SQL中,用户可以直接操作的是( A) A 基本表 B 视图 C 基本表或视图 D 基本表和视图
7. 在SQL中使用UPDATE对表中数据进行修改时,应使用的子句是( D) A WHERE B FROM C VALUES D SET 8. SQL语言具有的功能是( B) A 关系规范化,数据操作,数据控制 B 数据定义,数据操作,数据控制 C 数据定义,关系规范化,数据控制 D 数据定义,关系规范化,数据操作
9. 当选择满足一定条件的元组进行分组时,应使用的关键字是(C ) A SELECT B GROUP C WHERE D HAVING 10. 使用CREATE INDEX语句建立的是(C ) A 数据库 B 表 C 索引 D 视图 二、填空题
1.SQL插入记录的命令是INSERT ,删除记录的命令是__DELETE__,更新记录的命令是_ALTER_。
2.SQL查询语句中,在SELECT子句中允许出现列名和__表达式_。 3. SQL语句中,Order By可以对__列_进行排序。
4. 在SQL查询语句中,如果要去掉查询结果中的重复值,需使用__DISTINCT _。
5. 基本表中增加一个新列后,各元组在新列上的值是__NULL__。
6.SQL查询语句中,对应关系代数中的“选择”运算的语句是__where__。 7.在SELECT语句中,用*号表示__所有属性列_。
8.在SQL语言中,DELETE语句的作用是__从表中删除行__。
9.SQL包括了数据定义、数据查询、数据操作和__数据控制_功能。 10.在SQL中表示并集的关键字是__union_。 三、简答
1. SQL语言有什么特点,包括哪几部分的功能?
SQL语言的主要特点包括如下:
(1) 功能一体化。功能强大,通用性好,把多种功能融为一体; (2) 高度非过程化。用户只需要指出“做什么”,而不需要指出“怎么做”,
数据的存取和整个语句的操作过程由系统自动完成,大大减轻了用户的负担;
(3) 面向集合的操作方式。查询的结果和更新操作的对象均可为元组的集
合;
(4) 简单易学,灵活易用。语言简洁,语法简单。既可直接使用SQL语句对数据库进行操作,也可把SQL语句嵌入到高级语言程序中。
SQL主要有三大功能:数据定义功能可用于定义SQL模式、基本表、视图和索引;数据操纵又可分成数据查询和数据更新两类,其中数据更新又分为插入、删除和修改三种操作;数据控制功能包括对基本表和视图的授权,完整性规则的描述。
2. 什么是嵌套查询?什么是相关子查询?
在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块中的查询称为嵌套查询。
子查询的查询条件依赖于外层父查询的某个属性值,这类查询称之为相关子查询。求这类查询时,由于子查询和父查询相关,所以子查询需要反复求值。
3. 设顾客商品关系数据库有三个基本表,表结构如下:
商品表:Article (商品号,商品名,单价,库存量)
客户表:Customer (顾客号,顾客名,性别,年龄,电话) 订单表:OrderItem (顾客号,商品号,数量,购买价,日期)
(1)用SQL语言创建一个视图GM_VIEW,检索顾客的顾客号、顾客名和订购商品的商品号以及数量。
CREAT VIEW GM_VIEW(顾客号,顾客名,商品号,数量) AS
SELECT _ Customer.顾客号,顾客名,商品号,数量___ FROM Customer, OrderItem
WHERE __Customer .顾客号=OrderItem.顾客号___;
(2)请用SQL语言检索一次订购的商品数量最多的顾客名。
SELECT 顾客名
FROM Customer, OrderItem
WHERE _Customer .顾客号=OrderItem.顾客号and 数量_=(SELECT_max(数量)_FROM OrderItem);
(3)请用SQL语言找出女顾客购买的商品号、商品名和数量合计。
SELECT _ OrderItem.商品号,商品名,SUM(数量)_ FROM OrderItem, Artcle, Customer,
WHERE __ Customer .顾客号=OrderItem.顾客号 and Artcle.商品号=OrderItem .商品号 and 性别=“女”_
GROUP BY OrderItem.商品号,商品名;
(4)请用SQL语言ALTER TABEL命令给商品表Article增加一个字段,字段名为:产地,数据类型为:CHAR,长度为:30,命令如下:
ALTER TABEL _Article add 产地 char(30)__
四、 用SQL查询语句完成对学生管理数据库中三个基本表S、SC、C的以下查询操作。 (1)统计有学生选修的课程门数。
SELECT DISTINCT Count([Cno]) AS 课程门数 FROM SC;
(2)查询选修编号B03课程的学生的平均成绩。
SELECT Avg([Score]) AS 平均成绩 FROM SC
WHERE (((SC.Cno)='B03'));
(3)统计每门课程的学生选修人数。
SELECT SC.Cno, Count(SC.Sno) AS Sno之计数 FROM SC
GROUP BY SC.Cno;
(4)查询003系同学选修课程情况。
SELECT SC.Cno, S.Sdept, SC.Sno, SC.Score FROM SC INNER JOIN S ON SC.Sno = S.Sno WHERE (((S.Sdept)='003'));
五、 用SQL语言完成第二章简答题第六题中的操作。
(1)求供应工程J1零件的供应商号码SNO; Select SNO From SPJ
Where JNO =’ J1’
(2)求供应工程J1零件P1的供应商号码SNO; Select SNO From SPJ
Where JNO =’ J1’ and PNO=’P1’
(3)求供应工程J1零件为红色的供应商号码SNO; Select SPJ.SNO
From SPJ JOIN P ON P.PNO=SPJ.PNO
Where SPJ.JNO=’J1’ and P.COLOR=’红’
(4)求没有使用天津供应商生产的红色零件的工程号JNO; Select SPJ.JNO
From S JOIN (SPJ JOIN P ON SPJ.PNO= P.PNO) ON S.SNO=SPJ.SNO Where P.COLOR=’红’ and S. CITY<>’天津’
(5) 求至少用了供应商S1所供应的全部零件的工程号JNO。 SELECT SPJ.JNO FROM SPJ
WHERE SPJ.SNO='S1';
(本题有待商榷,大家再看一下)
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据库习题答案(1)(3)在线全文阅读。
相关推荐: