我对如何为这个示例SQL数据库设计表格感到有点困惑。
我有Customer
个实体。客户可以拥有许多Pet
个实体。每只宠物必须拥有自己的MedicalHistory
。但有些宠物是女性,所以他们有FemaleMedicalHistory
。最后,每个FemaleMedicalHistory都可以有很多Birth
条记录。
所以FemaleMedicalHistory
似乎是MedicalHistory
的子类,包含相同的字段以及指向Birth
表的内容。这是对的吗?
您如何将这些关系建模到表格?是MedicalHistory
& FemaleMedicalHistory
表共享相同的主键(例如,mid)?
修改
这就是我想到的,但我不确定它是否合适:
答案 0 :(得分:1)
@LePhleg:' medical_history'这本身就是一个非常糟糕的主意,这导致你定义了'medical_history_female'表。最好有一个只有几个字段的表 - mid,pid,curdate,treatment_type和details - 但是有很多行。每行都是每只宠物的治疗记录。这种结构消除了对医疗历史和女性的需求。和'出生'表格:出生是一种存储在(新)病史中的事件。
因此,对于一只动物(让我们说是一只母狗),在medical_history表中可能会有几个事件 - 驱虫,治疗断腿,分娩,分娩等,
答案 1 :(得分:0)
我遵循KISS原则,所以我将其设计为1:宠物和出生记录之间的许多 - 出生表包含有关宠物的信息,而不是医学史吗?另外,什么是“出生”?对于表及其属性,我会有更有意义的名称 - 恕我直言,20世纪是如此试图保存表/属性名称中的每个字符。