我正在爲我的大學開發一個社交網站。它使用SQL Server數據庫,每個用戶將有一個UniqID
(這是一個Int
,通過身份增量增加,從1開始...)。如何防止在兩個不同的SQL Server中重複使用UniqID
我的問題是,如果我想在另一所大學和自己的服務器UniqIDs
將開始從1至......運行該網站,因此它會導致重複UniqIDs
,它不可能把這兩所大學的網站學生不能與其他大學生有聯繫。
我不知道如何解決這個問題?我應該用分佈式數據庫嗎?
請給我一個開始的想法。
感謝
我正在爲我的大學開發一個社交網站。它使用SQL Server數據庫,每個用戶將有一個UniqID
(這是一個Int
,通過身份增量增加,從1開始...)。如何防止在兩個不同的SQL Server中重複使用UniqID
我的問題是,如果我想在另一所大學和自己的服務器UniqIDs
將開始從1至......運行該網站,因此它會導致重複UniqIDs
,它不可能把這兩所大學的網站學生不能與其他大學生有聯繫。
我不知道如何解決這個問題?我應該用分佈式數據庫嗎?
請給我一個開始的想法。
感謝
您可以使用UNIQUE-標識符(GUID)作爲ID。這是保證的廣告是唯一的(他們說的話)
這是一個GUID,而不是一個int。使用GUID作爲關鍵字有很多性能問題,並且它們看起來非常難看,因爲社交網絡ID – 2014-10-10 08:37:48
根據您共享的鏈接,使用NEWID()函數填充了StudentID的唯一標識符值。在任何情況下都有可能獲得相同的NEWID()值。因此,使用NEWID()不是爲任何列生成唯一值的最佳方法。 – knkarthick24 2014-10-10 08:48:59
不要讓DB分配ID,而不是生成自己的ID,可能使用的前綴是一個獨特的位置,例如一所大學的學生是UNI1_1,UNI1_2等,而另一所大學的學生則是UNI2_1,UNI2_2。
我不知道我是否瞭解這一點,但作爲您在不同的位置使用不同的數據庫,數據本身將不同,確定架構佈局是相同的,但數據是不同的,不同的用戶等等。這些ID應該只與該DB中的每個用戶相關,在另一個DB上它可能完全不同但是那不是這種情況,因爲該用戶不存在於DB1中DB2。 如果事實上數據是相同的,那麼你需要模仿數據等,或者只是使用那裏的數據庫。請糾正我作爲im不確定你的問題是什麼問 – lemunk 2014-10-10 08:26:24
是否有可能將UniqueID列的數據類型更改爲varchar?如果是這樣,你可以附加大學首字母(爲伯克利大學說:帶「伯克」)和ID(整數)。所以學生證的價值就像(Berk123,Berk124)。所以即使你合併,它也是唯一的。 – knkarthick24 2014-10-10 08:36:59
@StevenSmith是的數據是不同的,我想在網站上使用多個數據庫,每個數據庫都與大學有關!因此如果在db 1中的uniqID爲1000的user1和在uniqID爲1000的db 2中的user1會導致問題! – Domino 2014-10-10 08:43:57