2011-08-13 68 views
2

這裏是id這是什麼樣的主鍵?

DIAK6c 

和另一

65d0a2 

的第一個ID來自wahoha.com和webanswers.com第二進來。我如何在我的數據庫中生成這樣的ID。我有mysql用asp.net C#

+3

貌似某種類型的標識符。爲什麼你認爲這些映射到數據庫中的主鍵? – Oded

+0

當你說「主鍵」時,我認爲你其實是指「人工標識符」。標識符是否(僅)被用作密鑰是次要的,並且該密鑰對於給定表是否是主要的是任意的。 – onedaywhen

回答

1

即最有可能使用可逆算法編碼,以這種形式的整數,一個簡單的方法來實現這是你的數字ID轉換從基地10到基地36:

CONV(5234525977, 10, 36) 

結果會是「2EKI23D」,你可以很容易地轉換回整數形式:

CONV('2EKI23D', 36, 10) 

結果:5234525977

1

試用:(10個隨機數字像6422ab8810

SELECT LEFT(MD5(RAND()), 10) 

對於已經sucn你必須使用字符串數據類型的編號是什麼真的不從性能最好的選擇透視圖(索引重建速度降低)。因此,在使用這樣的Id作爲主鍵之前,重新思考10次。

除了主RowId,它可能是某種額外的Id,它是INT PRIMARY KEY

+0

它不一定是_stored_中的一個字符串。 –

1

基本上有兩種方法,您可以在數據庫中保留整數標識符,並在公開它們時將其轉換爲字符組合,或創建字符組合(通過隨機,散列,置換等等)以用作鍵在數據庫中。

第二個例子看起來像十六進制表示,可easilty被從整數密鑰創建:

int id = 6672546; 
string idString = Convert.ToString(id, 16);