我当前的架构如下所示:
ID | DisplayVal
-- ----------
1 1-H-3
2 2-H-3
3 3-J-4
在上面,该ID
字段是一个IDENTITY INT
也用作最终用户的字段account Id
。这DisplayVal
就是他们在屏幕上看到的。
一个新客户提供了他们自己的Account Id
价值观,但他们是alpha-numeric
,所以他们不能只是进入该IDENTITY
领域。以下是我的场景: 我正在寻找能够提供最佳maintainability
、end user experience
和magnitude and impact of changes
的场景testing/QA impact
。
我的第一个场景是添加一个Account Number
列,该列将是 aVARCHAR(x)
并容纳所有类型的Account Numbers
. 它看起来像这样:
ID | DisplayVal | AccountNumber
-- ---------- -------------
1 1-H-3 1
2 2-H-3 2
3 3-J-4 3
4 h389 h389
5 h-400-x h400
在上面,在第一个客户端的情况下,seeded Identity
将Account Id
被复制到 中Account Number
,但对于另一个客户端,仍然会seeded Identity
创建一个,但它们Account Number
会有所不同,它可能与 . 匹配,也可能不匹配Display Value
。
我的第二种情况是不添加任何列,对于提供 的客户端Account Number
,我将关闭IDENTITY INSERT
并插入新的 Id,然后重新打开身份插入。如果客户没有提供Account Number
,我会自动生成一个,显然是为了避免冲突。
第三种情况基本上是将新Account Number
的作为 alegacy Account Number
并为所有新记录创建新的身份值。这将要求最终用户熟悉新的Account Number
. 这可能是最简单的,但不确定是否有任何缺点。
如果您知道在这种情况下会很好地工作的另一种情况,请告诉我。