问答题
阅读以下说明和关系表,回答问题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