我的當前模式如下所示:哪種模式更改方案?
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
列,該列將爲VARCHAR(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
作爲legacy Account Number
併爲所有新記錄創建新的標識值。這將要求最終用戶熟悉新的Account Number
。這可能是最簡單的,但不確定是否有任何缺點。
如果還有另一種情況,你知道在這種情況下可以很好地工作,請告訴我。