问答题
学校教学箭理数据席中有三个基本表:
S({{U}}SNO{{/U}},SNAME,SDEPT,SAGE)
C({{U}}CNO{{/U}},CNAME,TEACHER) SC({{U}}SNO{{/U}},CNO,GRADE)
各属性含义为:SNO学号,SNAME学生姓名,SDEPT所在系,SAGE年龄;
CNO,课程号,CNAME课程名,TEACHER教师;GRADE成绩。
打下划线表示为各关系的关键字。SC巾的属性SNO和CNO也为外码,参照S和C的关键字。
问答题
写出此三个关系的SQL定义语句;
【正确答案】 Create table S(SNO CHAR(9)PRIMARY KEY,
SNAME CHAR(8),
SDEPT CHAR(40),
SAGE NUMBER(3));
Create table C(CNO CHAR(4)PRIMARY KEY,
CNAME CHAR(30),
TEACHER CHAR(8));
Create table SC(SNO CHAR(9),
CNO CHAR(4),
GRADE NUMBER(3),
PRIMARY KEY(SNO,CNO#),
FOREIGN KEY(SNO) REFERENCES S(SNO),
FOREIGN KEY(CNO) REFERENCES C(CNO));
【答案解析】
问答题
要求存删除S中一个元组时,把关系SC中具有相同SNO值的元组全部删除,则SC的定义心作如何修改:若要求修改S中的SNO时,SC中相同的SNO值也要修改,则SC应应作如何修改。
【正确答案】 要求在删除S中一个元组时,把关系SC中具有相同SNO值的元组全部删除,则SC定义应作修改如下:
FOREIGN KEY(SNO) REFERENCES S(SNO)oN DELETE RESTRICT;
若要求修改S中的SNO时,SC中相同的SNO值也要修改,则SC定义应作修改如下:
FOREIGN KEY(SNO)REFERENCES S(SNO)ON UPDATE CASCADE
【答案解析】
问答题
设计一个触发器,使得在修改SC的成绩时,要求修改后的成绩一定不能比原成绩低。
【正确答案】 CREATE TRIGGER up_permit
afterupdate of G on SC
REFERENCING old row as orow.new as llrow
For each row
When(orow.G>nrow.G)
Update SC SET G=OROW.G WHERE CNO=nrow.CNO
【答案解析】
提交答案
关闭