数据库设计 - 子类关系模型

时间:2013-05-29 21:52:48

标签: database-design entity-relationship

我对如何为这个示例SQL数据库设计表格感到有点困惑。

我有Customer个实体。客户可以拥有许多Pet个实体。每只宠物必须拥有自己的MedicalHistory。但有些宠物是女性,所以他们有FemaleMedicalHistory。最后,每个FemaleMedicalHistory都可以有很多Birth条记录。

所以FemaleMedicalHistory似乎是MedicalHistory的子类,包含相同的字段以及指向Birth表的内容。这是对的吗?

您如何将这些关系建模到表格?是MedicalHistory& FemaleMedicalHistory表共享相同的主键(例如,mid)?

修改

这就是我想到的,但我不确定它是否合适: enter image description here

2 个答案:

答案 0 :(得分:1)

@LePhleg:' medical_history'这本身就是一个非常糟糕的主意,这导致你定义了'medical_history_female'表。最好有一个只有几个字段的表 - mid,pid,curdate,treatment_type和details - 但是有很多行。每行都是每只宠物的治疗记录。这种结构消除了对医疗历史和女性的需求。和'出生'表格:出生是一种存储在(新)病史中的事件。

因此,对于一只动物(让我们说是一只母狗),在medical_history表中可能会有几个事件 - 驱虫,治疗断腿,分娩,分娩等,

答案 1 :(得分:0)

我遵循KISS原则,所以我将其设计为1:宠物和出生记录之间的许多 - 出生表包含有关宠物的信息,而不是医学史吗?另外,什么是“出生”?对于表及其属性,我会有更有意义的名称 - 恕我直言,20世纪是如此试图保存表/属性名称中的每个字符。