【发布时间】:2015-02-23 21:18:58
【问题描述】:
我正在创建一个处理处方的药房数据库。在设计数据库时,我考虑到医生可以在多个办公室工作,一个办公室可以住很多医生,所以我创建了以下多对多关系:
doctor:
| id | name | // more
office:
| id | name | address | // more
doctors_offices:
| doctor_id | office_id |
我遵循了在我的数据库教科书以及许多在线资源中看到的设计,但现在在尝试创建 prescription 表时遇到了一些困惑。在这张表中,我不仅想知道是哪个医生开的处方,还想知道在哪个位置。
我发现自己有几个选择:
- 向
doctors_offices表添加一个 auto_increment 键,以便为每个博士/办公室配对提供唯一标识符 - 向引用
doctors_offices的处方表添加一个复合外键。 (这可能吗?) - 向处方表添加两个外键。一个引用
doctors,一个引用offices。
这些选项中哪一个是最标准化的?我知道第三个可能是最少标准化的,因为它打开了我选择医生不属于的办公室的可能性,但我觉得很重要,因为它可能是一个常见的一些初学者数据库设计者的直觉。
【问题讨论】:
标签: mysql database database-design normalization