第一次
1、设有如下关系R1、R2、R3:
R1 R2 R3
A1 A2 A3 A1 A2 A3 a c 6 c b 5 c d 9 a d 2 b c 6 b c 6 a d 2 c d 9 f a 4 b d 2
要求:给出关系运 R2 R3∩R1的结果关系。 答案: 为空
要求给出关系R1 R2运算的结果关系。 A1 A2 A3 a d 2 b c 6 c d 9
2、设有如下关系R1、R2、R3:
R1 R2 A1 A2 A3 A1 A2 A3 a c 6 c b 5 c d 9 a d 2 b c 6 b c 6 a d 2 c d 9 f a 4 b d 2
要求:给出关系运算(R1∩R2) R3的结果关系。 答案:(R1∩R2) R3
A1 A2 A3
a d 2
b c 6
要求:给出关系运算(∏A1,A2 (R1) ∪∏A1,A2(R2)) A2 A3 B c 6 s d 2 t R3
A2 A3 c 6 d 2 R3的结果关系。
答案:(∏A1,A2 (R1) ∪∏A1,A2(R2)) R3
A1 A2 A3
a c 6
c d 2
b c 6
a d 2
b d 2
3、设学生选课涉及三个关系即学生关系S、课程关系C和学生选课关系SC,它们的结构如下所示:
S(S# ,SN ,SEX ,AGE ,DEPT)
C(C# ,CN)
SC(S# ,C# ,GRADE)
请用关系代数表达式表示下列查询。
Q1:写出姓名为‘李小波’的学号及系名所对应的运算表达式
IIs#,dept(δsn=’李小波’(S))
Q2:写出‘李小波’选修的课号、课名及成绩
IIc#,cn,grade((δsn=’李小波’(S)) >< C>
Q3:查询至少有一门选修课程成绩高于85分的学生的姓名及所在专业系。
?SN,DEPT ((δGRADE>85 (SC ) )>< S)
Q4:查询姓名为变量name的值的学生所选修的全部课程信息。
?c#,CN(C><(δSN=sn1(S ))))
4、设有系、教师、学生、课程等实体,其中每一个系包括系名、系址、系主任姓名、办公电话等属性,教师实体包括工作证号码、教师名、出生日期、党派等属性。学生实体包括学号、姓名、出生日期、性别等属性。课程实体包括课程号、课程名、预修课号等属性。设一个系可以有多名教师,每个教师教多门课程, 一门课程由一个教师教。其中有的教师指导多个研究生。每一个学生可选多门课程,每门课程只有一个预修课程,每
一个学生选修一门课程有一个成绩,试根据以上语义完成下述要求。联系有误
1.画出E-R图。
2.将以上的实体及实体集间的联系用关系模型表示出来
系(系名、系址、系主任姓名、办公电话)
教师(工作证号码、教师名、出生日期、党派,系名) 课程(课程号、课程名、预修课号,工作证号码) 学生(学号、姓名、出生日期、性别) 选课(课程号,学号,成绩)
5、假设某商业集团数据库中有一关系模式R如下:
R (商店编号,商品编号,数量,部门编号,负责人)
如果规定:(1) 每个商店的每种商品只在一个部门销售; (2) 每个商店的每个部门只有一个负责人; (3) 每个商店的每种商品只有一个库存数量。 试回答下列问题:
(1) 根据上述规定,写出关系模式R的基本函数依赖; (2) 找出关系模式R的键码;
(3) 试问关系模式R最高已经达到第几范式?为什么? (4) 如果R不属于3NF,请将R分解成3NF模式集。
(1) 有三个函数依赖:
商店编号,商品编号→部门编号 商店编号,部门编号→负责人 商店编号,商品编号→数量
(2) R的键码是 (商店编号,商品编号)
(3) 因为R中存在着非主属性“负责人”对键码 (商店编号、商品编号)的传递函数依赖,所以R属于2NF,R不属于3NF。
(4) 将R分解成:R1 (商店编号,商品编号,数量,部门编号) R2 (商店编号,部门编号,负责人)
第二次
1、设计题
现有关系数据库如下: 数据库名:学生成绩数据库
学生信息表(学号 char(6),姓名,性别,民族,身份证号) 课程信息表(课号 char(6),名称) 成绩信息表(ID,学号,课号,分数)
用SQL语言实现下列功能的sql语句代码。 1. 创建数据库[学生成绩数据库]代码。 2. 创建数据表[课程信息表]代码; 课程信息表(课号 char(6),名称) 要求使用:主键(课号)、非空(名称) 3. 创建数据表[学生信息表]代码;
学生信息表(学号 char(6),姓名,性别,民族,身份证号)
要求使用:主键(学号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性
别)
4. 创建数据表[成绩信息表];
成绩信息表(ID,学号,课号,分数)
要求使用:外键(学号,课号)、检查(分数),自动编号(ID) 5. 将下列课程信息添加到课程信息表的代码 课号 名称 100101 西班牙语 100102 大学英语
修改 课号为100102的课程名称:专业英语 删除 课号为100101的课程信息 6. 创建视图[成绩信息表视图]的代码;
成绩信息表视图(学号,姓名,课号,课程名称,分数)
7. 从学生信息表中查询姓刘的女同学的情况:姓名、性别、民族。
8. 查询有一门或一门以上课程成绩小于60分的所有学生的信息,包括学号、姓名。 答案:
no 1. 参考答案 create database [学生成绩数据库] go use [学生成绩数据库] go create table 课程信息表 ([课号] char(6) primary key, [名称] nchar(20) not null) create table 学生信息表 ([学号] char(6) primary key, [姓名] nchar(4) not null, [性别] nchar(1) check([性别] in ('男', '女')), [民族] nchar(8) default '汉族' not null, [身份证号] char(18) unique ) create table 成绩信息表 (ID int identity(1, 1), [学号] char(6) references 学生信息表(学号), [课号] char(6) references 课程信息表(课号), [分数] integer check([分数] between 0 and 100) ) insert 课程信息表 values('100101', '西班牙语') insert 课程信息表 values('100102', '大学英语') update 课程信息表 set 名称='专业英语' where 课号='100102' delete 课程信息表 where 课号='100101' create view [成绩信息表视图] as select 成绩信息表.学号,姓名,成绩信息表.课号,名称 课程名称,分数 from 成绩信息表,学生信息表,课程信息表 where 成绩信息表.学号=学生信息表.学号 and 成绩信息表.课号=课程信息表.课号 select 姓名, 性别, 民族 from 学生信息表 where 姓名 like '刘%' and 性别='女' select 学号, 姓名 from 学生信息表 where 学号 in (select distinct 学号 from 成绩信息表 where 分数<60) 2. 3. 4. 5. 6. 7. 8.
2、下面给出一个商品销售数据库中包含的三个基本表:
(1)客户表:table_Client(CNO,Cname,Csex,Cbirthday) (2)商品表:table_Goods(GNO,Gname,Gunit,Gprice)
(3)购物表:table_CG(CNO,GNO,CGquantity)
用T-SQL语句完成下列各题。
(1)查询购买了商品的客户号及姓名。 (2)查询1978年出生的客户号及姓名。
(3)购买了三种以上商品的客户号及客户姓名。 答:(1)select CNO,Cname
from table_Client where CNO in
(select distinct CNO from table_CG) (2)select CNO,Cname from table_Client
where Cbirthday=’1978’ (3)select CNO,Cname from table_Client where CNO in (select CNO
from table_CG group by CNO
having count(*)>3) 3、设有学生表S(SNO,SN)(SNO为学生号,SN为姓名)和学生选修课程表SC(SNO,CNO,CN,G)(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各题: (1)建立一个视图V_SSC(SNO,SN,CNO,CN,G),并按CNO升序排序; (2)从视图V_SSC上查询平均成线在90分以上的SN、CN和G。 答:(1)CREATE VIEW V_SSC(SNO,SN,CNO,CN,G) AS SELECT S.SNO,S.SN,CNO,SC.CN,SC.G FROM S,SC
WHERE S.SNO=SC.SNO ORDER BY CNO (2) SELECT SN,CN,G FROM V_SSC GROUP BY SNO
HAVING AVG(G)>90