试用SQL语言完成下列项操作:(1)查询选修课程包括“1042”号学生所学的课程的学生学号(2)创建一个计科系视图S_CS_VIEW,包括Sno学号、Sname姓名、Sex性别;(3)通过上面第2题创建的视图修改数据,把王平的名字改为王慧平(4)创建一选修课程信息的视图,视图名称为datascore_view,包含学号、姓名、成绩。(1) SELECT DISTINCT SNOFROM SC SCXWHERE NOT EXISTS(SELECT *FROM SC SCYWHERE SCY.SNO = ' 1042' ANDNOT EXISTS(SELECT *FROM SC SCZWHERE SCZ.SNO=SCX.SNO ANDSCZ.CNO=SCY.CNO));(2) CREATE VIEW S_CS_VIEWASSELECT SNO,SNAME,SEXFROM STUDENTWHERE Sdept=’CS’(3)UPDATE S_CS_VIEWSET SNAME=’ 王慧平’WHERE SNAME=’ 王平’(4) CREATE VIEW datascore_viewASSELECT SNO 学号、SNAME 姓名、GRADE 成绩FROM STUDENT,SC,COURSEWHERE STUDENT.SNO=SC.SNOAND COURSE.CNO=SC.CNOAND CNAME=’ ’第6章关系数据理论1、设有关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中属性分别表示:学号、所在系、学生住处、课程号、成绩。
假定每个系的学生住在同一个地方,每个学生可选修多门课程,每门课程可被多个学生选修,请根据语义写出该关系模式的主码及基本函数依赖,并通过模式分解,使其分解为与之等价的3NF模式集。答:主码为(Sno,Cno)。基本函数依赖:(Sno,Cno) GradeSno Sdept,(Sno,Cno) SdeptSno Sloc,(Sno,Cno) Sloc,S(Sno,Sname,SD,Sdname,Course,Grade)其中:Sno学号、Sname姓名、SD系名、Sdname系主任名、Course课程、Grade成绩。(1)写出关系模式S的基本函数依赖和主码。(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么?(3)将关系模式分解成3NF,并说明为什么?(1)写出关系模式S的基本函数依赖和主码。答: 关系模式S的基本函数依赖如下:Sno→Sname,SD→Sdname,Sno→SD,(Sno,Course) →Grade关系模式S的码为:(Sno,Course)。(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么?答: 原关系模式S是属于1NF的,码为(Sno,Course),非主属性中的成绩完全依赖于码,而其它非主属性对码的函数依赖为部分函数依赖,所以不属于2NF。
消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成2NF如下:S1(Sno,Sname,SD,Sdname)S2(Sno,Course,Grade)(3)将关系模式分解成3NF,并说明为什么?答: 将上述关系模式分解成3NF如下:关系模式S1中存在Sno→SD,SD→Sdname,即非主属性Sdname传递依赖于Sno,所以S1不是3NF。进一步分如下:S11(Sno,Sname,SD) S12(SD,Sdname)分解后的关系模式S11、S12满足3NF。对关系模式S2不存在非主属性对码的传递依赖,故属于3NF。所以,原模式S(Sno,Sname,SD,Sdname,Course,Grade)按如下分解满足3NF。S11(Sno,Sname,SD)S12(SD,Sdname)S2(Sno,Course,Grade)3、建立一个关于系、学生、班级、学会等诸信息的关系。学生:学号、姓名、出生年月、系名、班号、宿舍区。系统概论班级:班号、名、系名、人数、入校年份。系:系名、系号、系办公地点、人数。学会:学会名、成立年份、办公地点、人数。语义如下:一个系有若干,每个每年只招一个班,每个班有若干学生。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23458-3.html
6现在我用的9
那就让它误撞好了
就大陆的现状而言