如何在MySQL中实现两个具有共同属性的实体?

时间:2011-10-24 04:12:37

标签: mysql sql database-design data-modeling

我正在设计一个医生办公室和药房的数据库模型,并要求存储有关客户患者的数据,客户是在药房购买的人和看病的病人一样,顾客可以同时耐心等待。如何处理这种情况?如果我为每个实体创建一个实体,那么一个人就有可能在两个桌子上。有什么建议?

2 个答案:

答案 0 :(得分:2)

两种方法:

  1. 一个叫做人员表的表,有'is_customer'和'is_patient'文件可以是真/假

  2. 三个表,一个用于存储具有唯一ID的所有相关数据(姓名,地址,电话号码等)的人,一个用于患者的表,其仅是一个唯一ID的表和对该表的引用人员表和一个客户表,它只是一个唯一ID表和人员表的引用。

答案 1 :(得分:2)

如果客户和患者的数据完全相同,您可以拥有一个包含个人信息的表和一个type列,可以是一个位或整数。此type列将告诉您该记录是针对患者还是客户。我没有看到患者作为一个大问题的案例的重复记录,但如果你想避免这种情况,你将不得不创建一个链接表。类似的东西:

person
(id, name, address, ...)

person_type( person_id, type_id)

同时是客户和患者的人将在此表中有2个条目;每个type(客户/患者)一个。