我們目前有一個包含用戶登錄的網站。如何同時創建兩個數據庫記錄,該記錄沒有連續的Ids
我們有一個userId用戶表。
我們現在希望用戶有一個重複的配置文件,這是完全與他們的主要配置文件分開。這需要是一個祕密配置文件。
現在我們可以在db中添加兩條記錄,但是id會是連續的(直到我們達到高註冊率),所以用戶可以制定一個userId與一個ID更高的關聯。
我意識到這不是一個理想的解決方案,但它是一個大型軟件項目的後期改變,所以我們儘可能務實,儘可能少地改變代碼。
選項:
- 關閉自動遞增的ID,並建立我們自己的keyGeneration表。從0開始一個表,然後以1000000000開始一個表。然後,我們可以關閉用戶表中的自動遞增ID,並使用這些鍵。
問題是,鍵有沒有運行,1,1000000000,2,1000000001,3,1000000002會導致大量的索引問題?我們是否必須一直強制重建索引?
- 我們鍵入一個單獨的表只是第二輪廓標識的,重新開始在10000000000.然後,我們修改我們的代碼來檢查的id> 999999999和翻轉在服務器端,將查找工作正常的邏輯。
這意味着要做到這一點檢查到處的用戶ID從前端傳入站點。
由於我們沒有做太多,(我們顯然主要是抓住用戶id的登錄用戶安全,它可能不是那麼糟糕。
無論如何,只是想知道如果任何人有什麼想法?
///////編輯
要把它放到進一步背景下,想象在計算器或Facebook,你有2個配置文件,你可以控制,這讓他們之間沒有任何聯繫。喜歡的方式,多個用戶Facebook可以充當頁面帳戶,但從該帳戶到真實用戶配置文件沒有鏈接。
本質上,爲了不破壞參照完整性或重新編寫太多的代碼,我真的想將一個ID(int)傳遞迴這些帳戶的前端。然後,整個系統就像它一樣繼續滴答滴答。
Guid可能很酷!但它會有一個性能開銷(不是我關心的是這個問題);但它也意味着編寫大量的代碼來處理傳遞給前端的Guid(不是我們依賴前端變量是正確的)但這就是爲什麼我建議上面的高整數解決方案。由於我們仍然有潛伏在後臺的ASP.NET成員,我幾乎認爲這可能是好的,但是A)我們計劃在某天移除(或遷移到簡單的成員身份)b)我們在用戶表中使用連續的Guid生成來獲得性能對不起,在需要之前再次談論優化)
將'isSecret'字段添加到表中,並且不允許用戶查看隱藏的配置文件。 – Minras
您可以創建一個沒有自動識別號的新的User2表。然後從User1使用插入觸發器創建初始複製記錄。 –
知道ID很危險的原因是什麼?如果安全性取決於*不知道ID *,那聽起來......不完整。理解上下文對於安全相關的問題很重要。 –