数据库设计复习文档格式.doc
- 文档编号:14180776
- 上传时间:2022-10-19
- 格式:DOC
- 页数:8
- 大小:111.23KB
数据库设计复习文档格式.doc
《数据库设计复习文档格式.doc》由会员分享,可在线阅读,更多相关《数据库设计复习文档格式.doc(8页珍藏版)》请在冰豆网上搜索。
学号
姓名
课程号
课程名
1、设学生课程数据库中有三个关系:
学生关系S(S#,SNAME,AGE,SEX)
学习关系SC(S#,C#,GRADE)
课程关系C(C#,CNAME)
其中S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。
用SQL语句表达下列操作
(1)检索选修课程名称为“MATHS”的学生的学号与姓名
(2)检索至少学习了课程号为“C1”和“C2”的学生的学号
(3)检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄
(4)检索平均成绩超过80分的学生学号和平均成绩
(5)检索选修了全部课程的学生姓名
(6)检索选修了三门课以上的学生的姓名
答案:
(1)SELECTSNAME,AGE
FROMS,SC,C
WHERES.S#=SC.S#
ANDC.C#=SC.C#
ANDCNAME=’MATHS’
(2)SELECTS#
FROMSC
WHERECNO=’C1’ANDS#IN(SELECTS#
FROMSC
WHERECNO=’C2’)
(3)SELECTS#,SNAME,AGE
FROMS
WHEREAGEBETWEEN18AND20
(4)SELECTS#,AVG(GRADE)‘平均成绩’
FROMSC
GROUPBYS#
HAVINGAVG(GRADE)>
80
(5)SELECTSNAME
FROMS
WHERENOTEXISTS
(SELECT*
FROMC
WHERENOTEXISTS
(SELECT*
FROMSC
WHERES#=S.S#ANDC#=C.C#
)
)
(6)SELECTSNAME
FROMS,SC
WHERES.S#=SC.S#
GROUPBYSNAME
HAVINGCOUNT(*)>
3
2、设学生-课程数据库中包括三个表:
学生表:
Student(Sno,Sname,Sex,Sage,Sdept)
课程表:
Course(Cno,Cname,Ccredit)
学生选课表:
SC(Sno,Cno,Grade)
其中Sno、Sname、Sex、Sage、Sdept、Cno、Cname、Ccredit、Grade分别表示学号、姓名、性别、年龄、所在系名、课程号、课程名、学分和成绩。
试用SQL语言完成下列项操作:
(1)查询选修课程包括“1042”号学生所学的课程的学生学号
(2)创建一个计科系学生信息视图S_CS_VIEW,包括Sno学号、Sname姓名、Sex性别;
(3)通过上面第2题创建的视图修改数据,把王平的名字改为王慧平
(4)创建一选修数据库课程信息的视图,视图名称为datascore_view,包含学号、姓名、成绩。
(1)SELECTDISTINCTSNO
FROMSCSCX
WHERENOTEXISTS
(SELECT*
FROMSCSCY
WHERESCY.SNO='
1042'
AND
NOTEXISTS
(SELECT*
FROMSCSCZ
WHERESCZ.SNO=SCX.SNOAND
SCZ.CNO=SCY.CNO));
(2)CREATEVIEWS_CS_VIEW
AS
SELECTSNO,SNAME,SEX
FROMSTUDENT
WHERESdept=’CS’
(3)UPDATES_CS_VIEW
SETSNAME=’王慧平’
WHERESNAME=’王平’
(4)CREATEVIEWdatascore_view
AS
SELECTSNO学号、SNAME姓名、GRADE成绩
FROMSTUDENT,SC,COURSE
WHERESTUDENT.SNO=SC.SNO
ANDCOURSE.CNO=SC.CNO
ANDCNAME=’数据库’
在学生课程管理数据库中创建一触发器,当向学生选课表插入记录时,检查该记录的学号在学生表中是否存在,检查该记录的课程号在课程表中是否存在,及选课成绩是否在0到100范围,若有一项为否,则不允许插入。
createtriggerstu_ins_tri
onsc
forinsert
as
begin
declare@s#char(6),@c#char(5),@gradeint
select@s#=sno,@c#=cno,@grade=score
frominserted
if(@s#notin(selectsnofromstudent))or(@c#notin(selectcnofromcourse))or(@gradenotbetween0and100)
rollbacktransaction
else
print'
成功插入'
end
写出下列SQL自主权限控制命令。
1)把对Student和Course表的全部权限授予所有用户。
GRANTALLPRIVILIGESONTABLEStudent,CourseTOPUBLIC;
2)把对Student表的查询权和姓名修改权授予用户U4。
GRANTSELECT,UPDATE(Sname)ONTABLEStudentTOU4;
3)把对SC表的插入权限授予U5用户,并允许他传播该权限。
GRANTINSERTONTABLESCTOU5WITHGRANTOPTION;
4)把用户U5对SC表的INSERT权限收回,同时收回被他传播出去的授权。
REVOKEINSERTONTABLESCFROMU5CASCADE;
5)创建一个角色R1,并使其对Student表具有数据查询和更新权限。
CREATEROLER1;
GRANTSELECT,UPDATEONTABLEStudentTOR1;
6)对修改Student表结构的操作进行审计。
AUDITALTERONStudent;
第6章关系数据理论
第7章数据库设计
三、应用题
设有如下实体:
学生:
学号、单位、姓名、性别、年龄、选修课程名课程:
编号、课程名、开课单位、任课教师号教师:
教师号、姓名、性别、职称、讲授课程编号单位:
单位名称、电话、教师号、教师名
上述实体中存在如下联系:
(1).一个学生可选修多门课程,一门课程可为多个学生选修;
(2).一个教师可讲授多门课程,一门课程可为多个教师讲授;
(3).一个单位可有多个教师,一个教师只能属于一个单位。
试完成如下工作:
(1).分别设计学生选课和教师任课两个局部信息的结构E-R图。
(2).将上述设计完成的E-R图合并成一个全局E-R图。
(3).将该全局E-R图转换为等价的关系模型表示的数据库逻辑结构。
解:
(1).学生选课、教师任课局部E-R图如下所示。
开课
单位
拥有
性别
教师号
编号
单位名
年龄
学生选课局部E-R图
属于
电话
教师授课局部E-R图
(2).合并后的全局E-R图如下所示。
全局E-R图
为避免图形复杂,下面给出各实体属性:
单位:
单位名、电话
学号、姓名、性别、年龄
教师:
教师号、姓名、性别、职称
课程:
编号、课程号
(3).该全局E-R图转换为等价的关系模型表示的数据库逻辑结构如下:
单位(单位名,电话)
教师(教师号,姓名,性别,职称,单位名)
课程(课程编号,课程名,单位名)
学生(学号,姓名,性别,年龄,单位名)
讲授(教师号,课程编号)
选修(学号,课程编号)
创建与执行存储过程
1、在MyDB中创建存储过程proc_1,要求实现如下功能:
产生学分为4的课程学生选课情况列表,其中包括课程号、课程名、学分、学号、姓名、专业、性别等。
并调用此存储过程,显示执行结果。
createorreplacePROCEDUREproc_1
ascnochar(4);
cnamevarchar(16);
creditint;
snochar(8);
snamevarchar(10);
speciallyvarchar(3);
sexchar
(2);
begin
selecto,ame,course.credit,student.sno,student.sname,student.sex,class1.specially
intocno,cname,credit,sno,sname,sex,specially
fromcourse,student,grade
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 设计 复习
![提示](https://static.bdocx.com/images/bang_tan.gif)