当前位置: 首页 > 面试题库 >

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

乌翔
2023-03-14
问题内容

我想要简单的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是交货等等?这样一来,您不必设计一些疯狂的方案…



 类似资料:
  • 问题内容: 我需要生成一个范围内的随机唯一数字吗?怎么做 ? 我可以通过生成随机数 我知道这段代码不好,所以我需要一个更好的优化版本代码!帮帮我 ! 例如:如果我需要在1到15之间生成3个数字,它们应该像5、9、1而不是3,1,2 [具有1-3(我要生成的数字)] 问题答案: 以随机顺序排列数字范围的数组: 包装功能: 例: 结果:

  • 本文向大家介绍SqlServer 数据库 三大  范式,包括了SqlServer 数据库 三大  范式的使用技巧和注意事项,需要的朋友参考一下 1 概述 一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系,

  • 问题内容: 我知道如何在Python范围内生成随机数。 我知道我可以将其循环生成n个数量的这些数字 但是,我需要确保该列表中的每个数字都是唯一的。除了大量的条件语句之外,还有一种直接的方法可以生成n个唯一的随机数吗? 重要的是列表中的每个数字都不同。 所以 [12,5,6,1] =好 但 [12,5,5,1] =不好,因为数字5出现两次。 问题答案: 如果您只需要采样而无需更换: random.s

  • 问题内容: 这个问题已经有了SQL的答案,并且我能够使用R在R中实现该解决方案。但是,我一直找不到使用来实现它的方法。 问题是要计算滚动日期范围内一列的不同值,例如(如果直接从链接的问题中引用)数据是否如下所示: 如果我们使用3天的日期范围,则结果集将类似于以下内容 这是使用R在R中创建相同数据的代码: 在这方面的任何帮助将不胜感激。谢谢! 编辑1: 这是一个玩具问题,我想将其应用于更大的数据集,

  • 问题内容: 在这里,最低年龄是10岁,因此我们首先计算范围10-15。该范围内有5个学生。对于第二个范围,我们需要找到年龄> 15(即18)。因此,第二个范围是18-23,依此类推。如果能自动计算范围并计算该范围内的数据,我将不胜感激。 问题答案: 您可以在SUM()语句中使用条件来获取该条件所在的计数。我会计算年龄在BETWEEN()必要范围内的条件。试试这个: 这只会返回一行,但是它将包含您需

  • 对于我的Java类,我正在编写一个小程序,首先选择一个介于1和100之间的数字。然后,它会提示用户开始猜测正确的。如果用户对的猜测过高或过低,程序会打印出一个新范围,供他们在该范围内进行猜测。如果用户输入或,程序只需重新要求用户输入,但不会以任何方式更改范围。 示例输出(当机密号为20时)如下所示: 该项目似乎已经基本完成,但只有一个例外。其中一个要求是,当用户键入的超出我们给定的1和100范围时