阅读以下说明,回答问题1-4。[说明] 设学校教学数据库的模式如下: S(SNUM,SNAME,AGE) SC(SNUM,CNUM,CREDIT,SCORE) C(CNUM,CNAME,TEACHER) T(TNUM,TEHCHER,POS,SAL) SNUM表示学生的学号,SNAME表示学生的姓名,AGE表示学生的年龄,CNUM表示选修课程的编号,CREDIT表示该课程的学分,SCORE表示课程的成绩,CNAME表示课程名,TEACHER表示任课的教师,TNUM表示老师的工作证号,POS表示教师的职称,SM,表示教师的收入。 试定义下列完整性约束和规则:
问答题
在关系S中插入的学生年龄值应在18~21岁之间。
【正确答案】 正确答案:定义s时采用检查子句: CREATTABLE S( SNUM CHAR(5), SNAME char(10) NOT NULL, AGE SMALLINT, PRIMARY KEY(SNUM) CHECK ;18 and AGE<=21)
【答案解析】
问答题
在关系SC中插入的元组时,其SNUM和CNUM的值必须分别在S和C中出现过。
【正确答案】 正确答案:采用外键子句约束: CREAT TABLE SC( SNUM CHAR(4), CNUM CHAR(5), CREDIT SMALLINT, SCORE SMALLINT, FOREIGN KEY (SNUM) REFERENCE S(SNUM) FOREIGN KEY (CNUM) REFERENCE C(CNUM) )
【答案解析】
问答题
在关系C中把某个CNUM的值改为新的值的时候,必须同时要把关系SC中那些同样的CNUM的值也修改为新值。
【正确答案】 正确答案:采用外键约束: CREATE TABLE SC( SNUM CHAR(4), CNUM CHAR(5), CREDIT SMALLINT, SCORE SMALLINT, FOREIGN KEY (CNUM) REFERENCE C(CNUM) ON UPDATE CASCADE, FOREIGN KEY(SNUM) REFERENCE S(SNUM))
【答案解析】
问答题
为T定义完整性规则,“教授的工资不得低于2000元,如果低于2000元,自动改为2000元”。
【正确答案】 正确答案:用数据库的触发器来实现: CREATE TRIGGER UPDATE SAL BEFORE INSERT OR UPDATE OF SAL,POS ON T FOR EACH ROW WHEN(:new.POS='教授') BEGIN IP:new.SAL<2000 THEN :new.SAL=2000; END IF; END
【答案解析】
提交答案
关闭