1

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

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

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

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

编辑:

这是我的想法,但我不确定它是否适合: 在此处输入图像描述

4

2 回答 2

1

@LePhleg:“medical_history”本身就是一个非常糟糕的主意,这导致您定义了“medical_history_female”表。最好有一个只有几个字段的表——mid、pid、curdate、treatment_type 和 details——但有很多行。每行将是每只宠物的治疗记录。这种结构消除了对“medical_history_female”和“births”表的需要:出生是一个将存储在(新)病史中的事件。

因此,对于一只动物(假设是一只母狗),medical_history 表中可能有几个事件 - 驱虫、治疗断腿、分娩、分娩、绝育等。

于 2013-05-30T10:34:32.810 回答
0

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

于 2013-05-29T23:03:43.987 回答