6

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

例如:在我的项目中,我有一张客户表,每个客户对每种产品都有自己的特价(只有 5 种产品,未来没有计划更多产品),每个客户在一周中也有独特的日子公司将产品交付给他。

当天数和产品价格是客户表中的列而不是单独的表时,诸如更改客户的天数/价格或显示所有客户的天数和价格之类的许多操作会容易得多,因此仅创建一个大客户是否被驳斥在这种情况下的表?有什么缺点?

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

4

2 回答 2

5

显然,仅仅说应该始终规范化是不切实际的。没有任何建议总是正确的。

如果您可以肯定地说 5 个“项目”在很长一段时间内就足够了,我认为如果可以节省您的工作,将它们存储为列是完全可以的。

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

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

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

于 2012-07-16T20:50:39.330 回答
2

规范化完全是关于数据完整性(一致性),仅此而已;与难、易、快、慢、高效和其他模糊属性无关。当前的设计几乎可以肯定允许数据异常。如果不是现在,当您尝试跟踪价格变化、发票、订单等时,它就是死路一条。

于 2012-07-17T11:47:41.270 回答