实体继承是通过单个表还是多个更好地完成的?

时间:2010-07-29 12:25:30

标签: sql database database-design

我有一张表,其中包含协议信息。它适用于我们记录的95%的协议。

但是某种类型的协议需要另外6个字段来捕获特定于该类协议的信息。

我的问题是,如果将这6个字段添加到现有协议表中,知道该信息对于许多协议记录没有意义,或者如果更好地创建另一个具有1:1关系的表,则更好原始协议表,在这些特殊类型的协议的情况下扩展它。

这两个选项对我来说都没什么吸引力,但我想知道当你有选择时,一个人被认为是比另一个更好的做法。

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

从可扩展性的角度来看,多个表可能是您最好的选择。虽然您目前只有一种需要额外字段的协议类型,但这种情况的存在表明,未来类似的变化值得在您的设计中适应。当出现其他变体时,多表方法将允许您优雅地包含这些协议类型及其特征属性。

此外,对于您可能希望执行协议类型分析而不会导致对子类表的连接命中的情况,您的超类表中的agreement_type属性(或类似的东西)是值得考虑的。数据的预期用途将是您的指南,以确定此类属性是否有意义。

答案 1 :(得分:0)

我的选择是一张分开的表,因为95%的协议都是毫无意义的信息。

答案 2 :(得分:0)

取决于。

单个表更易于查询,另外6个字段对额外存储的影响不大。如果现有表中的行数很小,或者现有列的数量已经非常大,那么总的来说,我会将其他字段添加到现有表中。

另一方面,如果这种变化会大大增加已经很大的现有表的大小,那么设置一个新表绝对值得考虑。

答案 3 :(得分:0)

希望这是不言自明的。

agreement_model