SQL在表中保存相同产品的不同版本

时间:2014-03-31 22:32:12

标签: database postgresql database-design

我在postgres中有一个产品表,用于存储我需要的所有数据。我需要找到最好的方法:

每种产品在完成方式上都有不同的状态 - 机加工,涂漆,组装等。对于每种状态,都会有一个字母在产品ID中发生变化。

保存数据的最有效方法是什么?对于产品的每种状态,表格中应该有“其他产品”吗?或者在某处工作时加入表?

示例:

111a1 for machined
111b1 for painted

然而,这些是同一个最终产品,只是在不同的阶段......

1 个答案:

答案 0 :(得分:0)

这取决于你想要的效率:存储,摄取,查询,可维护性......

联接可以使用 - 您可以加入产品ID的某些子字符串,因此您不需要为每个生产阶段都有单独的产品。

但代码的可维护性非常重要。企业改变 - 可能包括子组件。

您可能想要重新考虑这种改变产品ID的方案来显示状态。产品ID和工作流状态是正交概念。所以你可能希望将它们放在不同的字段中。你可能会以这种方式编写更少的代码。替代方案将变得非常熟悉substr()(取决于您的SQL方言),以及其他地方的各种重复。