问答题
阅读以下说明和关系表,回答问题1~5。
[说明]
已知某儿童医院的医疗数据库的模式如下:
PATIENT (PNUM,PNAME,SEX,AGE)
DOCTOR (DNUM,DNAME,DEPT)
ORDER (PNUM,DNUM,NUMBER)
其中PNUM表示病人号,PNAME表示病人姓名,SEX表示病人的性别,AGE表示病人的年龄,DNUM表示医生工作号,DNAME表示医生的姓名,DEPT表示医生所在的科室, NUMBER表示医生给病人所看病的次数。
试定义下列完整性约束:
问答题
[问题1]
在PATIENT中插入病人的性别时必须为“男”或“女”,年龄在1~18岁之间。
【正确答案】
【答案解析】在定义PREATE时使有检查子句: CREATE TABLE PATIENT ( PNUM CHAR(4), PNAME CHAR(S) NOT NULL, SEX CHAR (2), AGE SMALLINT, PRIMARY KEY( PNUM), CHECK( SEX: '男'OR SEX = '女', CHECK(AGE > =0 AND AGE < = 18) );
问答题
[问题2]
在ORDER中插入元组时,其中的DNUM和PNUM必须出现在PATIENT和DOCTOR中。
【正确答案】
【答案解析】在定义ORDER时使用权用外键约束 CREATE TABLE ORDER ( PNUM CHAR(4), DNUM CHAR(4), NUMBER REAL, PRIMARY KEY ( PNUM, DNUM), PRIMARY KEY ( PNUM ) REFERENCES PATIENT( PNUM), PRIMARY KEY (DNUM) REFERENCES DOCTOR(DNUM), )
问答题
[问题3]
在ORDER中修改NUMBER的值必须大于0。
【正确答案】
【答案解析】在定义ORDER时加入检查子句 CHECK( NUMBER > 0)
问答题
[问题4]
删除—个PATIENT中的一个元组时,必须将关系ORDER中那些具有相同的PNUM值的元组全部删除。
【正确答案】
【答案解析】在定义ORDER时使用外键子句: FOREIGN KEY ( PNUM ) REFERENCES PATIENT(PNUM) ON DELETE CASCADE
问答题
[问题5]
在修改DOCTOR中的某个DNUM时,必须同时将ORDER中那些的DNUM的值页修改为新值。
【正确答案】
【答案解析】在定义ORDER时使作外键子句: FOREIGN KEY ( DNUM ) REFERENCES PATIENT(DNUM) ON UPDATE CASCADE