相关疑难解决方法(0)

SQL Server中数据库范围内唯一且简单的标识符

首先,我知道这个问题,并且建议(使用GUID)不适用于我的情况.

我想要简单的UID,以便我的用户可以通过电话轻松地传达这些信息:

您好,我的订单1584有问题

而不是

你好,我订单有问题4daz33-d4gerz384867-8234878-14

我希望那些是独特的(数据库范围),因为我有一些不同类型的'对象'...有订单ID,交付ID和账单ID,因为这些之间没有一对一的关系,我无法猜出ID指的是什么类型的对象.

使用数据库范围的唯一ID,我可以立即告诉客户所指的对象.我的用户只需在搜索工具中输入一个ID,我就会向他保存额外的点击以进一步细化所需的内容.

我目前的想法是使用具有不同种子1,2,3等的标识列,并且增量值为100.

这提出了一些问题:

  • 如果我最终获得超过100种对象类型怎么办?我可以使用1000或10000,但不能很好地扩展"气味"

  • 是否有可能种子"丢失"(在复制期间,数据库问题等?)

  • 更一般地说,还有其他我应该注意的问题吗?

  • 是否可以使用非整数(我目前使用bigints)作为标识列,以便我可以在ID前面加上代表对象类型的东西?(例如varchar列)

  • 使用仅包含标识列的"主表"以及对象类型是不是一个好主意,这样我只要需要一个新想法就可以在其中插入一行.我觉得它可能有点矫枉过正,我担心这会使我的所有插入请求变得复杂.此外,我无法在不查看数据库的情况下确定对象类型

  • 还有其他聪明的方法来解决我的问题吗?

sql database sql-server database-design identity

47
推荐指数
3
解决办法
4668
查看次数

标签 统计

database ×1

database-design ×1

identity ×1

sql ×1

sql-server ×1