是手动分配实体的ID一个好主意?

SDR*_*yes 2 language-agnostic modeling identity

我们正在开发一个系统来替换客户的旧应用程序.

实际上,有许多实体(如商家,销售人员,产品等)必须具有手动分配的ID - 因此它们可以与其他现有系统集成.即会计.

我们认为最好的解决方案就是允许用户在创建实体时手动分配实体ID; 我们将建议他下一个可用的ID,用户可以根据需要进行更改.不允许更新!(muahahaha)

我们很高兴听到你的想法.优点缺点

提前致谢 :)

PD:你知道有关的文件吗? - 身份和身份证 -


更新

  • 我们认为应该有这种情况适用但不适用的情况.所以...
  • 此外,在某些情况下,客户端确实希望给定的实体具有他们带来的ID.我认为组织内部代码.

Not*_*tMe 10

永远不会让用户有权分配或创建基础对象标识符.这些必须是系统维护的.

想象一下,如果用户选择已经在使用的ID,试图找出相关实体实际上与哪个实体相关的梦魇.

相反,您应该拥有系统分配的某种类型的常规实体ID(int,guid,无论如何),并用于指向所有依赖对象的链接.然后有一个"外部"id,用户可以将自己的标识符放入其中.

也许这在某种程度上与外部系统有关,也许不是.重点是,无论他们做什么,你都能保持自己的一致性.

  • +1当创建与另一个系统接口的externalID时,如何告诉他们不能使用哪些ID?你不能.externalID不是唯一的,尽管它们对每个实体都是唯一的.使用单独的externalID就是我们这样做的方式. (3认同)
  • @SDReyes - 使用整数键可能出现的最大错误可能是诱使开发人员向用户展示密钥.要做得对,你需要像Chris提到的那样做,并且有两个值:一个用于用户,一个用于系统.最好的例子是发票.您有一个系统生成的密钥,用于用户从未看到的发票,以及一个完全独立的密钥,其中包含用户在发票上标记的单独规则. (3认同)