设有一局部应用,包括 3 个实体“科室”,“医生”,“病人”,且有以下事实:每位医生属于且仅属于一个科室;每个科室可以聘用若干医生,对每个医生聘用时存有聘用期限和聘用日期;一个病人可以由不同的医生为其诊断,每个医生可以为若干病人诊治,每次诊断存有就诊日期。设科室的属性包括科室代码,科室名称;医生的属性包括工号,姓名和职称;病人的属性包括病历号、姓名、年龄。 (1)试画出这个数据库的E-R图。 (2)转化为适当的关系模型,并给出关系的主码和外码。
时间: 2023-12-06 19:42:06 浏览: 223
E-R图如下:
![E-R图](https://img-blog.csdnimg.cn/20210729152754963.png)
转化为适当的关系模型如下:
科室表(Department):
| 属性名称 | 数据类型 | 约束条件 |
| -------- | -------- | -------- |
| 科室代码 | 整型 | 主键 |
| 科室名称 | 字符串 | |
医生表(Doctor):
| 属性名称 | 数据类型 | 约束条件 |
| -------- | -------- | ------------ |
| 工号 | 整型 | 主键 |
| 姓名 | 字符串 | |
| 职称 | 字符串 | |
| 科室代码 | 整型 | 外键(参照科室表) |
病人表(Patient):
| 属性名称 | 数据类型 | 约束条件 |
| -------- | -------- | -------- |
| 病历号 | 整型 | 主键 |
| 姓名 | 字符串 | |
| 年龄 | 整型 | |
医生-病人关系表(Doctor_Patient):
| 属性名称 | 数据类型 | 约束条件 |
| --------- | -------- | ------------ |
| 医生工号 | 整型 | 外键(参照医生表) |
| 病人病历号 | 整型 | 外键(参照病人表) |
| 就诊日期 | 日期 | |
科室-医生关系表(Department_Doctor):
| 属性名称 | 数据类型 | 约束条件 |
| -------- | -------- | ------------ |
| 科室代码 | 整型 | 外键(参照科室表) |
| 医生工号 | 整型 | 外键(参照医生表) |
| 聘用日期 | 日期 | |
| 聘用期限 | 整型 | |
其中,科室表的主码是科室代码,医生表的主码是工号,病人表的主码是病历号。科室-医生关系表的主码是(科室代码,医生工号),医生-病人关系表的主码是(医生工号,病人病历号)。
外码如下:
科室-医生关系表的外码是(科室代码)参照科室表的主码(科室代码);
科室-医生关系表的外码是(医生工号)参照医生表的主码(工号);
医生-病人关系表的外码是(医生工号)参照医生表的主码(工号);
医生-病人关系表的外码是(病人病历号)参照病人表的主码(病历号)。
阅读全文