Ada*_*331 1 mysql database database-design normalization
我正在创建一个处理处方的药房数据库.在设计数据库时,我考虑到医生可以在许多办公室工作,办公室可以是许多医生的家,所以我创建了以下多对多的关系:
doctor:
| id | name | // more
office:
| id | name | address | // more
doctors_offices:
| doctor_id | office_id |
Run Code Online (Sandbox Code Playgroud)
我遵循了我在数据库教科书中看到的设计以及许多在线资源,但我现在在尝试创建prescription表时遇到了一些困惑.在这张表中,我想知道不仅是哪位医生写了处方,而是在哪个位置.
我发现自己有几个选择:
doctors_offices表中添加auto_increment键,以便为每个dr/office配对提供唯一标识符doctors_offices.(这可能吗?)doctors,一个引用offices.哪些选项最常规化?我知道第三个可能是最不规范化的,因为它开启了我选择医生不属于的办公室的可能性,但我觉得很重要,因为它可能是一些初学数据库设计者的共同本能.
如果您保存doctor_id以及location_id处方数据,它会更灵活.否则,如果医生在已经给予一些处方后搬到另一个办公室,你会遇到困难,除非你在某个办公室的医生出现的每个时间段都有新的记录.此外,如果办公室里有另一位医生,并且尽管他或她没有办公室任务,他也会无法正确描述这种情况.
如果系统因技术原因阻止他们插入数据,人们往往变得聪明,你应该总是考虑这样的例外,因为它们会发生.