零件号字段的原子性

时间:2010-06-28 23:29:56

标签: database database-design normalization

在我们的内部库存应用程序中,我们存储三个值(在单独的字段中),这三个值成为此格式的打印“部件号”:PPP-NNNNN-VVVV(P =前缀,N =数字,V =版本)。< / p>

因此,例如,如果你有一个零件010-00001-01,你知道它是“010”类型的一部分版本1(可以说是印刷电路板)。

因此,在创建零件工程的过程中,希望通过将“数字”组件(中间5位数)保持为多个前缀相同来将部件组合在一起,如下所示:

001-00040-0001 - Overall assembly
010-00040-0001 - PCB
015-00040-0001 - Schematics

这似乎有问题且令人沮丧,因为它有时会为“数字”字段增加额外的含义(但不一致,因为并非所有具有相同“数字”组件的部分都必须链接)。

我是纯粹主义者还是这么好? 1NF在原子性方面非常模糊。我认为我很沮丧,因为有额外的逻辑来确保整个部件号的下一个“数字”部分是有效的并且可用于所有前缀。

2 个答案:

答案 0 :(得分:1)

根据我的经验,无论数据库规范规则如何,当客户/客户/用户想要以某种方式完成某些事情时,很可能是有理由的,这个理由会为他们省钱(以某种方式)。有时它会通过减少步骤,降低培训成本或仅仅因为那是一直存在的方式来节省资金。无论是什么原因,最终你最终都会这样做,因为他们付钱完成它(除非它违反了会计规则)。

在这种情况下,它听起来像是某些报告查询的额外排序标准,以及带有自动递增键的新“分配号码”表。这对我来说听起来不是太糟糕。有时候问我数据库报告,客户副总裁严格委托客户副总裁以这样的方式投放数据,以使不同的副总裁在会议上看起来很糟糕(而不是他先告诉我)。

答案 1 :(得分:1)

有许多企业因“零件编号综合症”而陷入困境或几乎陷入困境。您可以找到一些案例研究。 DEC part numbers有些混乱。

客户并不总是正确的,但客户始终是客户。

在这种情况下,听起来像工程师试图用一个数字来建模关系。我指的是整体装配,PCB和Scematics之间的关系。将关系建模为关系更好。它可以让您在未来更加灵活。在这一点上,您可能很难销售工程设计。