我正在创建一个处理处方的药房数据库。在设计数据库时,我考虑到医生可以在许多办公室工作,办公室可以是许多医生的家,所以我创建了以下多对多的关系:
doctor:
| id | name | // more
office:
| id | name | address | // more
doctors_offices:
| doctor_id | office_id |
我遵循了我在数据库教科书中看到的设计以及许多在线资源,但我现在在尝试创建prescription
表时遇到了一点混乱。在这张表中,我想知道不仅是哪位医生写了处方,而是在哪个位置。
我发现自己有几个选择:
doctors_offices
表添加auto_increment密钥,以便为每个博士/办事处配对设置唯一标识符doctors_offices
的处方表中。 (这可能吗?)doctors
,另一个引用offices
。哪些选项最常规化?我知道第三个可能是最少标准化,因为它开启了我选择医生不属于的办公室的可能性,但我觉得很重要,因为它可能是一个常见的一些初学数据库设计师的直觉。
答案 0 :(得分:5)
如果您将doctor_id
以及location_id
与处方数据一起保存,则会更灵活。否则,如果医生在已经给予一些处方后搬到另一个办公室,你会遇到困难,除非你在某个办公室的医生出现的每个时间段都有新的记录。此外,如果办公室里有另一位医生,并且尽管他或她没有办公室任务,他也不能正确地描述这种情况。
如果系统因技术原因阻止他们插入数据,人们往往会变得聪明,你应该始终考虑这些例外,因为它们会发生。