【发布时间】:2023-03-25 08:10:01
【问题描述】:
首先,我知道this question,建议(使用 GUID)不适用于我的情况。
我想要简单的 UID,以便我的用户可以通过电话轻松地传达这些信息:
您好,我的订单有问题 第1584章
相对于
您好,我的订单有问题 4daz33-d4gerz384867-8234878-14
我希望它们是唯一的(数据库范围内),因为我有几种不同类型的“对象”……有订单 ID、交货 ID 和计费 ID,因为没有一对一的关系在这两者之间,我无法猜测 ID 指的是哪种对象。
使用数据库范围的唯一 ID,我可以立即判断我的客户所指的对象。我的用户只需在搜索工具中输入一个 ID,我就为他节省了额外的点击以进一步细化正在寻找的内容。
我目前的想法是使用具有不同种子 1、2、3 等的标识列,增量值为 100。
这提出了几个问题:
如果我最终得到超过 100 个对象类型怎么办?授予我可以使用 1000 或 10000,但是不能很好扩展的东西“闻起来”
种子是否有可能“丢失”(在复制期间、数据库问题等?)
更一般地说,还有其他我应该注意的问题吗?
是否可以使用非整数(我目前使用 bigints)作为标识列,以便我可以在 ID 前面加上代表对象类型的东西? (例如 varchar 列)
使用仅包含标识列和对象类型的“主表”是否是个好主意,这样我可以在需要新想法时在其中插入一行。我觉得这可能有点矫枉过正,而且我担心它会使我所有的插入请求变得复杂。另外,如果不查看数据库,我将无法确定对象类型
还有其他聪明的方法可以解决我的问题吗?
【问题讨论】:
-
我在向用户公开 IDENTITY 值时遇到了问题。在 2000 年,对于像我这样的软件工程师来说是重要的一年,我加入了一家公司,并被分配了 2000 号员工。我一直在与人员对话,类似于帕丁顿熊和地铁检票员之间的对话:“.. .我问,'你叫什么名字?而不是“你想去哪里?”……”
标签: sql sql-server database database-design identity