当一个表引用其他几个表时的关系数据库设计

时间:2012-11-28 15:05:02

标签: mysql database-design innodb

例如,让我们想象一个“appointments”表,它跟踪几种类型的约会(眼睛,牙齿......)这个表可以有一个ID, date, doctor_id, Appointment_type和其他所有约会的列类型。然后,每种类型的约会都有自己的表来保存特定于此appointements类型的数据。

我选择了这个设计,因为我们有大量的数据与所有约会通信,所以我不想重复它,每个约会都有非常不同的数据类型,因此只有一个具有大量NULL字段的appointent表好像不太好。

知道我将主要需要立即查询所有约会类型,这是组织这些表的最佳方式吗?

1 个答案:

答案 0 :(得分:0)

有两种方法:

每个层次结构一个表(又名单表继承)您将所有约会类型的所有属性放在一个表中,并使用“类型”字段来区分约会类型。这很快,因为没有连接。但是这个表可能有很多列。

每个子类一个表(又称多表继承)这样,您就拥有了一个包含公共字段的基类表,并使用多态关联来链接到子类表中的记录。这个速度较慢,需要更多表格。如果要查询所有约会类型,则可能难以编写联接。

我认为对于您的应用程序(查询所有约会类型),每个层次结构一个表更好。