Sql-Server

使用者資訊集中數據庫

  • September 30, 2019

我們目前的設置是我們有一個我稱之為集中式數據庫的東西,它保存由幾個不同數據庫共享的使用者資訊。我們有幾個數據庫來分離來自不同應用程序的數據,因為它們之間只有使用者資訊是通用的。處理此問題的最佳方法是什麼?目前我們不能有使用者 ID 的外鍵,因為它在不同的數據庫中。此外,我們必須在可能需要使用者數據的任何儲存過程或查詢中對單獨的數據庫名稱進行硬編碼,這使得開髮變得很痛苦,因為我只能擁有一個開發數據庫,而不是保留一個與不同分支一起工作的數據庫。有沒有人建議以更好的方式處理這個問題(除了將數據庫放在一起)?

設計很大程度上是由個人喜好驅動的,我沒有足夠的背景來告訴你你的方法是否是我同意或不同意的方法。但是,如果您希望繼續目前的設置,我至少可以為您的問題提供一些答案。

目前我們不能有使用者 id 的外鍵,因為它在不同的數據庫中……有沒有人建議更好的處理方法(除了將數據庫放在一起)?

正如您懷疑的那樣,您無法在不同數據庫中的對象之間定義明確的外鍵關係。 這篇 StackOverflow 文章介紹了一種配置隱含 fkey 關係的簡單方法,但是它使用帶有繼承風險的觸發器,並且這種方法將無法利用典型外鍵關係所獲得的任何性能改進。

此外,我們必須在可能需要使用者數據的任何儲存過程或查詢中對單獨的數據庫名稱進行硬編碼,這使得開髮變得很痛苦,因為我只能擁有一個開發數據庫,而不是保留一個與不同分支一起工作的數據庫。有沒有人建議以更好的方式處理這個問題(除了將數據庫放在一起)?

如果您想避免程式碼中的硬連結到其他數據庫,請為存在於另一個數據庫中的所述對象配置同義詞,這樣您的程式碼就不必使用任何三部分查詢。

引用自:https://dba.stackexchange.com/questions/249931