数据库设计 - 何时拆分表?

时间:2012-07-16 19:47:22

标签: sql database database-design

有时创建一个单独的表会产生更多的工作,我是否应该拆分它?

例如:在我的项目中,我有一个客户表,每个客户对每个产品都有自己的特价(只有5个产品和更多产品未来没有计划),每个客户也有一周中独特的日子,当公司向他提供产品时。

许多操作,例如更改客户的日期/价格,或显示日期和时间。当日子和时候,所有顾客的价格会更容易产品价格是customers表中的列而不是单独的表,因此在这种情况下,它是否被反驳为只创建一个大客户表?有什么缺点?

更新:他们刚刚告诉我,在一年左右之后,他们有可能添加更多产品,他们说他们的业务在任何情况下都不会超过20-30种产品。 我仍然无法理解为什么在这种情况下,当产品价格没有关系时(每个客户都有自己的特殊价格)向Products表添加行比将Customers列添加到Customers表更好? 我能想到的唯一好处是,只有5种产品的客户不必“携带”20种可空产品(节省服务器空间)?我没有太多经验,所以也许我错过了明显的经历?

2 个答案:

答案 0 :(得分:3)

显然,只是说总是规范化的人并不务实。没有建议是真的。

如果你可以肯定地说5个“项目”已经足够长时间我认为将它们存储为列是完全没问题的,如果它可以节省你的工作。

如果您的预测失败并且需要存储第6个项目,则可以添加新列。只要列的数量不是很有可能失控,这应该不是问题。

要小心这样的策略,因为许多程序员预测未来的能力非常有限。

最后,只有一件事:以最低的成本提供所请求的解决方案。代码的纯度不是目标。

答案 1 :(得分:2)

标准化是关于数据完整性(一致性),没有别的;不是硬,容易,快,慢,有效和其他黑暗的属性。目前的设计几乎肯定允许数据异常。如果不是现在,当你试图跟踪价格变化,发票,订单等时,这是一个死胡同。