首先,我知道这个问题,并且建议(使用 GUID)不适用于我的情况。
我想要简单的 UID,以便我的用户可以轻松地通过电话传达此信息:
您好,我的订单 1584 有问题
与
您好,我的订单 4daz33-d4gerz384867-8234878-14 有问题
我希望它们是唯一的(数据库范围内的),因为我有几种不同类型的“对象”……有订单 ID、交货 ID 和计费 ID,因为它们之间没有一对一的关系,我无法猜测 ID 指的是哪种对象。
使用数据库范围的唯一 ID,我可以立即分辨出我的客户所指的对象。我的用户只需在搜索工具中输入一个 ID,我就可以为他节省额外的点击以进一步细化正在查找的内容。
我目前的想法是使用具有不同种子 1、2、3 等的标识列,增量值为 100。
这提出了几个问题:
如果我最终得到超过 100 个对象类型怎么办?授予我可以使用 1000 或 10000,但是不能很好扩展的东西“闻起来”
种子是否有可能“丢失”(在复制、数据库问题等期间?)
更一般地说,还有其他我应该注意的问题吗?
是否可以使用非整数(我目前使用 bigints)作为标识列,以便我可以在 ID 前面加上代表对象类型的东西?(例如 varchar 列)
使用仅包含标识列和对象类型的“主表”是否是个好主意,这样我可以在需要新想法时在其中插入一行。我觉得这可能有点矫枉过正,而且我担心它会使我所有的插入请求变得复杂。另外,如果不查看数据库,我将无法确定对象类型
还有其他聪明的方法来解决我的问题吗?