给定关系模式科室K(科室号,科室名,负责人,科室电话)、医生Y(医生号,医生名,性别,科室号,联系电话,家庭地址)和患者B(病历号,患者名,性别,医保号,联系方式),井且1个科室有多名医生,1名医生属于1个科室;1名医生可以为多个患者诊疗,1个患者也可以找多名医生诊疗。科室与医生之间的“所属”联系类型、医生与患者之间的“诊疗”联系类型分别为(1);其中(2)。下列查询“肝胆科”医生的医生名、联系电话及家庭住址的关系代数表达式中,查询效率最高的是(3)。
空白(2)处应选择()
A.“诊疗”联系需要转换为一个独立的关系,并将医生号和患者名作为主键
B.“诊疗”联系需要转换为一个独立的关系,并将医生号和病历号作为主键
C.“所属”联系需要转换为一个独立的关系,并将医生号和科室名作为主键
D.“所属”联系需要转换为一个独立的关系,并将医生号和科室号作为主键
参考答案:B
解析:根据题意可知一个科室有多名医生,一名医生属于一个科室,所以科室与医生之间的“所属”联系类型为1:n;又因为一名医生可以为多个病人诊疗,一个病人也可以找多名医生诊疗,所以医生与病人之间的“诊疗”联系类型为n:m。当医生与病人之间的“诊疗”联系类型为n:m时,需要转换为一个独立的关系,并将医生号和病历号作为主键。根据关系代数表达式查询优化的准则1“提早执行选取运算”,即对于有选择运算的表达式,应优化成尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量和从外存读块的次数。准则2“合并乘积与其后的选择运算为连接运算”,即在表达式中,当乘积运算后面是选择运算时,应该合并为连接运算,使选择与乘积一道完成,以避免做完乘积后,需再扫描一个大的乘积关系进行选择运算。