单选题
某医院管理系统部分关系模式为:科室(科室号,科室名,负责人,电话)、病患(病历号,姓名,住址,联系电话)和职工(职工号,职工姓名,科室号,职位,住址,联系电话)。假设每个科室有一位负责人和一部电话,每个科室有若干名职工,一名职工只属于一个科室;一个医生可以为多个病患看病;一个病患可以由多个医生多次诊治;职位有医生、护士和其他。
a.科室和职工的所属联系类型是
20
,病患和医生的就诊联系类型是
21
。科室关系的主键和外键分别为
22
。对于就诊联系最合理的设计是
23
,就诊关系的主键是
24
。
b.若科室关系中的科室名是唯一的,并要求指出外码。请将下述SQL语句的空缺部分补充完整。
CREATE TABLE 科室 (科室至号 CHAR(3) PRIMARY KEY,
科室名 CHAR(10)
25
,
负责人 CHAR(4),
电话 CHAR(20),
26
);
单选题
A.病历号,职工号B.病历号,职工号,就诊时间
C.病历号,职工姓名D.病历号,职工姓名,就诊时间
【正确答案】
D
【答案解析】[解析] 本题考查数据库基本概念、数据库设计基础知识以及SQL语言。
试题(37)、(38)考查数据库联系类型方面的基本概念。根据题意“每个科室有若干名职工,一名职工只属于一个科室”,因此科室和职工的所属联系类型是1:n的,试题(37)的正确答案是B。又因为“一个医生可以为多个病患看病;一个病患可以由多个医生诊治”,因此病患和医生的就诊联系类型是n:m的,试题(38)的正确答案是D。
试题(39)考查数据库范式方面的基本概念。科室和病患关系都不属于第三范式的原因是:科室关系的主键是科室号,非主属性“科室名,负责人,电话”虽然不存在对键的部分函数依赖,但是存在传递依赖,即科室号→科室名→电话;病患关系的主键是病历号,非主属性“姓名,住址,联系电话”,虽然不存在对键的部分函数依赖,但是存在传递依赖,即病历号→姓名→(住址,联系电话)。综上分析,试题(39)正确的答案是D。
试题(40)、(41)考查数据库设计方面的基础知识。就诊联系是多对多联系,对于多对多联系只能转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个多方实体的码及联系的属性,关系的码是多方实体的码构成的属性组。另外,由于病患会找多个医生为其诊治,在就诊关系模式的设计时需要加上就诊时间,以便唯一区分就诊关系中的每一个元组,即就诊关系模式的主键为(病历号,职工号,就诊时间)。综上分析,试题(40)正确的答案是C,试题(41)正确的答案是B。
试题(42)正确的答案是B,因为试题要求科室名是唯一的,由于科室关系中负责人来自职工,因此应该用UNIOUE限定。试题(43)正确的答案是D,因为职工关系的主键是职工号,所以科室关系的外键负责人需要用FOREIGN KEY(负责人)REFERENCES职工(职工号)来约束。这样科室关系的完整的SQL语句如下:
CREATE TABLE 科室 (科室号 CHAR(3) PRIMARY KEY,
科室名 CHAR(10) UNIQUE,
负责人 CHAR(4),
电话 CHAR(20))
FOREIGN KEY (负责人) REFERENCES 职工 (职工号));