我想要简单的UID,以便我的用户可以轻松地通过电话传达此信息:
您好,我在1584号订单上遇到了问题
相对于
你好,我在订购4daz33-d4gerz384867-8234878-14时遇到问题
我希望它们是唯一的(数据库范围内的),因为我有几种不同的“对象”……有订单ID,交货ID和帐单ID,并且由于它们之间没有一对一的关系,我无法猜测ID指的是哪种对象。
使用数据库范围内的唯一ID,我可以立即说出客户所指的对象。我的用户只需在搜索工具中输入一个ID,我便为他保存了额外的单击以进一步完善所需的内容。
我当前的想法是使用具有不同种子1、2、3等且增量值为100的标识列。
但这引起了一些问题:
如果我最终得到100种以上的对象类型,该怎么办?当然可以使用1000或10000,但是缩放效果不好的“气味”
种子是否有可能“丢失”(在复制,数据库问题等期间)?
更一般而言,还有其他我应该注意的问题吗?
是否可以使用非整数(我目前使用bigints)作为标识列,以便为ID加上表示对象类型的前缀?(例如varchar列)
使用仅包含标识列和对象类型的“主表”是一个好主意,以便在需要新主意时可以在其中插入一行。我觉得这可能有点矫kill过正,而且恐怕会使我的所有插入请求变得复杂。加上我不查看数据库便无法确定对象类型的事实
还有其他聪明的方法可以解决我的问题吗?
为什么不在所有表上使用身份,但是在您向用户展示身份时,只需在类型上加上一个字符就可以了?例如O1234是订单,D123213是交货等等?这样一来,您不必设计一些疯狂的方案…