(3) 检索WANG同学不学的课程的课程号。
select C# from SC where C# not in(select C# from SC where S# in (select S# from S where Sname ='WANG')) (4) 统计每门课程的平均成绩。
select avg(Score) from SC group by C# (5) 修改“数据库原理”的学分,改为4学分。
update CS set Score = '4' where C# = (select C# from C where Cname = '数据库原理') 这个题目不明确,你要改的学分是哪个?是课表里面的学分吗?
update C set Credit = '4' where Cname = '数据库原理'
(6) 创建一个查询学生成绩的视图VSC,VSC包括学生号(S#)、学生姓名(Sname)、
课程名称(Cname)和成绩(Score)
create view VSC as
select S.S#,S.Sname,C.Cname,Score from S,C,SC where S.S# = SC.S# and C.C#=SC.C# 5、现有如下关系:
职工(职工号,姓名,性别,职务,家庭地址,部门编号) 部门(部门编号,部门名称,地址,电话)
保健(保健卡编号,职工号,检查身体日期,健康状况) 用SQL语句完成下列问题:
(1).查找所有女科长的姓名和家庭地址;
select 姓名,家庭地址 from 职工 where 职务 = '科长' and 性别 = '女'
(2).统计“财务科”中健康状况为“良好”的职工人数。
select count (a.职工号) from 职工 a,部门 b,保健 c where a.部门编号=b.部门编号 and a.职工号=c.职工号 and b.部门名称='财务科' and c.健康状况='良好'
(3).删除“销售处”职工在职工关系中的记录;
delete from 职工 where 部门编码 in (select 部门编号 from 部门 where 部门名称 = '销售处') go
delete from 保健 where 职工号 in (select 职工号 from 职工 where 部门编号 in (select 部门编号 from 部门 where 部门名称 = '销售处'))
(4).将职工号为“3061”的职工的健康状况改为“一般”;
update 保健 set 健康状况 = '一般' where 职工号 = '3061'
(5).建立健康状况为“差”的职工的视图。
create view \差\as
select * from 职工 where 职工号 = (select 职工号 from 保健 where 健康状况 = '差')
三、分析题
1、设关系模式 R ( A , B , C ), F={AC → B , AB → C , B → C } ,则 R 最高属于第几范式?说明理由。 2、
设有如下关系R
教师名 马千里 于得水 余快 于得水 教师地址 D1 D1 D2 D1 课程名 C1 C2 C3 C4 (1) 该关系为第几范式? 为什么? (2) 如何将它分解为高一级范式?
它为第几范式? 为什么? 解:它是2NF。
因为R的候选关键字为“课程名”。
依赖关系: 课程名→教师名,教师名 → 课程名,教师名→教师地址,所以 课程名→教师地址。即存在非主属性“教师地址”对候选关键字课程名的传递函数,因此R不是3NF。但:因为不存在非主属性对候选关键字的部分函数依赖,所以R是2NF。 是否存在删除操作异常?若存在,则说明是在什么情况下发生的? 解: 存在。当删除某门课程时会删除不该删除的教师的有关信息。
将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题?
解: 分解为高一级范式如图所示。
R1如下: R2如下:
课程名 C1 C2 C3 C4 教师名 马千里 于得水 余快 于得水 教师名 马千里 于得水 余快 教师地址 D1 D1 D2 分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师方面的信息。
3、如下图给出的关系SC为第几范式?是否存在插入、删除异常?若存在,则说明是在什么情况下发生?发生的原因是什么?如何将它分解,分解后的关系能否解决操作异常问题? 表SC如下: SNO 80152 80153 80154 80154 80155 CNO C1 C2 C1 C3 C4 CTITLE OS DB OS AI CL INAME 王平 高升 王平 杨杨 高升 ILOCA D1 D2 D1 D3 D2 GRADE 70 85 86 72 92 其中:SNO为学号,CNO为课程号,CTITLE为课程名,INAME为教师名,
ILOCA为教师地址,GRADE为成绩
解:SC为1NF。
它存在插入、删除异常操作。当增设一门新课程时,因还没有学生选修,则缺少关键字的一部分SNO而不能执行插入操作;当所有学生退选某门课程而进行删除操作时,会将不法删除的课程信息删除。
SC关系中存在插入和删除操作异常的原因在于,该关系的候选关键字为(SNO,CN0),其中仅有非属性GRADE完全函数依赖于(SNO,CNO),其他非主属性CTITLE、INAME、ILOCA都只函数依赖于CNO,即它们与(SNO,CNO)为部分函数依赖关系。分解后的关系模式如下:
SG 如下: SNO 0152 80153 80154 80154 80155 CNO C1 C2 C1 C3 C4 GRADE 70 85 86 72 95
分解后的两个关系子模式都为2NF(实际上,SG是3NF,它无传递依赖)。解决了先前的插入、删除异常操作。当增设一门新课程时,可将数据插入到CI表中;当所有学生退选某门课程时,只需删除SG表中的有关记录,而该课程的有关信息仍保留在CI表中。
分解2NF后的CI关系中仍存在插入、删除操作异常。若有一个新教师报到,需将其有关数据插入操作;当取消某门课程而删除CI表中的一条记录时,会将不该删除的教师的有关信息删除。CI表中出现操作异常的原因是该关系中存在非主属性对候选关键字的传递函数依赖:
CNO→INAME,INAME →CNO,INAME→ILOCA,所以CNO→ILOCA(函数传递依赖,CI不是3NF)
将CI进一步分解为如下所示的Course和Inst两个关系,可以解决上述操作异常。CI如下:COURSE O C1 C2 C3 C4 CTITLE OS DB AI CL INAME 王平 高升 杨杨 高升 ILOCA D1 D2 D3 D2 CNO C1 C2 C3 C4CTITLE OS DB AI CLINAME 王平 高升 杨杨 高升ILOCA D1 D2 D3 INAME 王子 INST 杨杨 高升 4、假设某旅馆业务规定,每个账单对应一个顾客,
账单的发票号是唯一的,账单中包含一个顾客姓名、到达日期和顾客每日的消费明细,账单的格式如题下图所示。
旅馆账单格式 发票号 到达日期 顾客姓名 王大斌 王大斌 王大斌 王大斌 消费日期 2007/12/10 2007/12/10 2007/12/10 2007/12/11 项目 房租 餐费 电话费 餐费 金额 ¥150.00 ¥37.00 ¥2.50 ¥98.00 2344566 2007/12/10 2344566 2007/12/10 2344566 2007/12/10 2344566 2007/12/10 如果根据上述业务规则,设计一个关系模式:
R(发票号,到达日期,顾客姓名,消费日期,项目,金额)。 试回答下列问题: (1)找出R的候选键。
(2)判断R最高可达到第几范式,为什么?
(3)给出R的一个可能的3NF分解。
答案:(1)R的候选键是(发票号,消费日期,项目)(2分)

