2014-10-10 17 views
0

我正在爲我的大學開發一個社交網站。它使用SQL Server數據庫,每個用戶將有一個UniqID(這是一個Int,通過身份增量增加,從1開始...)。如何防止在兩個不同的SQL Server中重複使用UniqID

我的問題是,如果我想在另一所大學和自己的服務器UniqIDs將開始從1至......運行該網站,因此它會導致重複UniqIDs,它不可能把這兩所大學的網站學生不能與其他大學生有聯繫。

我不知道如何解決這個問題?我應該用分佈式數據庫嗎?

請給我一個開始的想法。

感謝

+0

我不知道我是否瞭解這一點,但作爲您在不同的位置使用不同的數據庫,數據本身將不同,確定架構佈局是相同的,但數據是不同的,不同的用戶等等。這些ID應該只與該DB中的每個用戶相關,在另一個DB上它可能完全不同但是那不是這種情況,因爲該用戶不存在於DB1中DB2。 如果事實上數據是相同的,那麼你需要模仿數據等,或者只是使用那裏的數據庫。請糾正我作爲im不確定你的問題是什麼問 – lemunk 2014-10-10 08:26:24

+1

是否有可能將UniqueID列的數據類型更改爲varchar?如果是這樣,你可以附加大學首字母(爲伯克利大學說:帶「伯克」)和ID(整數)。所以學生證的價值就像(Berk123,Berk124)。所以即使你合併,它也是唯一的。 – knkarthick24 2014-10-10 08:36:59

+0

@StevenSmith是的數據是不同的,我想在網站上使用多個數據庫,每個數據庫都與大學有關!因此如果在db 1中的uniqID爲1000的user1和在uniqID爲1000的db 2中的user1會導致問題! – Domino 2014-10-10 08:43:57

回答

1

那麼因爲有不同的數據庫與不同的數據,你不能簡單地檢查你從哪個數據庫獲取數據? 如果你需要這樣做所有數據庫方面,那麼不要只依賴於每個用戶的ID,有像位置的東西像「ID 42,LocationCode UHJ」這樣的方式,如果ID是相同的「BOB」和「JOE」,因爲你知道哪個位置從那裏,可以告訴那裏不一樣

+0

謝謝我認爲它是最好的方法:) – Domino 2014-10-10 09:34:45

+0

可能,雖然你可以檢查所有代碼而不需要更改數據庫。就像建議你可以使用GUID一樣,但是我個人不喜歡這個想法,因爲它對我沒有感覺「乾淨」。 – lemunk 2014-10-10 09:48:56

0

您可以使用UNIQUE-標識符(GUID)作爲ID。這是保證的廣告是唯一的(他們說的話)

unique identifier

+0

這是一個GUID,而不是一個int。使用GUID作爲關鍵字有很多性能問題,並且它們看起來非常難看,因爲社交網絡ID – 2014-10-10 08:37:48

+0

根據您共享的鏈接,使用NEWID()函數填充了StudentID的唯一標識符值。在任何情況下都有可能獲得相同的NEWID()值。因此,使用NEWID()不是爲任何列生成唯一值的最佳方法。 – knkarthick24 2014-10-10 08:48:59

-2

不要讓DB分配ID,而不是生成自己的ID,可能使用的前綴是一個獨特的位置,例如一所大學的學生是UNI1_1,UNI1_2等,而另一所大學的學生則是UNI2_1,UNI2_2。