《数据库原理2研讨》由会员分享,可在线阅读,更多相关《数据库原理2研讨(8页珍藏版)》请在金锄头文库上搜索。
1、cnc12121670 郭超数据库第八周研讨cnc1. 写有关school数据库的完整性约束(1)确保每个学生在同一学期同一门课只能选一个老师开设的课程。(1)create assertion asse1 check(not exists( select *from e a,e bwhere a.xh = b.xh and a.xq = b.xq and a.kh = b.kh and a.gh b.gh)cnc(2)确保每门课程每年只开设一次。(2)create assertion asse2-1 check/不允许同一门课在同一年里由不同老师开(1 all( select count(di
2、stinct a.kh)from o a,o bwhere a.kh=b.kh and left(a.xq,9)=left(b.xq,9) and a.ghb.gh)create assertion asse2-2 check/不允许同一个老师在同一年开同一门课(not exists (select *from o a,o bwhere a.gh=b.gh and left(a.xq,9)=left(b.xq,9) and a.kh=b.kh)cnc2. 设有三个关系模式:student(sno,sname,age,sex,saddr,dno)course(cno,cname,chara,cr
3、edit,dno,term,tname)grade(sno,cno,term,pgrade,egrade,ggrade)中文含义:学生(学号,姓名,年龄,性别,住址,所在系),课程(课程号,课程名,课程性质,学分数,开课系,开课学期,教师),成绩(学号, 课程号, 开课学期,平时成绩,考试成绩,总评成绩)。请用指定的方法定义下列完整性约束:cnc1、每个学期每个学生至多可选8门课程(用断言)。(1)create assertion asse1 check (8= all(select count (distinct (cno)from gradegroup by sno , term);2、如
4、果总评成绩修改后低于60分,那么,如果平时成绩大于80分,在修改后的总评成绩上再增加考试成绩的8%,但不得超过60分(用sql3触发器)。cnc(2)create trigger trig1after update of ggrade on gradereferencingold as oldtuplenew as newtuplewhen (newtuple.ggrage80)update gradeset ggrade=ggrade oldtuple.egrade * 0.08where sno = newtuple.sno and cno = o and term = newtupl
5、e.termupdate gradeset ggrade=60where sno = newtuple.sno and cno = o and term = newtuple.termand ggrade60for each row;cnc3. 某图书借阅管理数据库有如下关系模式:书籍表(书号, 书名, 数量, 分类, 状态, 出版社名)读者表(借书证号, 姓名, 年龄, 电话, 地址)借阅情况表(借书证号, 书号, 借书日期, 还书日期)书籍表b(书号sh, 书名sm, 数量sl, 分类fl, 状态zt, 出版社名cbsm)读者表r(借书证号jszh, 姓名xm, 年龄nl, 电话dh, 地址dz)借阅情况表s(借书证号jszh, 书号sh, 借书日期jsrq, 还书日期hsrq)cnc1)把对书籍表的查询、修改权和转授权授予用户admin。2)使每个人都能查询未出借图书的借阅情况,但不能直接查看借阅情况表。grant select, update on b to admin with grant optioncreate view aas select b.sh,sm,sl,fl,zt,cbsm, jszh,jsrq,hsrqfrom b,swhere b.sh=s.sh and zt=未出借grant select on a to public