Sql-Server-2008
關於何時使用非 dbo 模式與新數據庫的決策標準
我主要是一名應用程序開發人員,但發現自己必須為我目前的項目做所有的前期數據庫工作(順便說一句……它的 MS SQL Server 2008)。作為第一個決定,我試圖弄清楚是使用單獨的數據庫還是在同一個數據庫中使用單獨的模式來劃分我的狀態。我對 SQL Server Schema 做了一些閱讀,這似乎是一種分離對象域的自然方式(我喜歡),但我不確定這種模式是否存在隱藏成本。
在這兩種方法之間進行選擇時,我應該考慮哪些更實際的事情?如果我避免
dbo.mytable
支持,我是否會為我的架構myschema.mytable
創造其他挑戰(或問題)?作為旁注……在某些時候,這將被移交給真正的DBA 來維護/支持,所以我試圖確保我不會讓他們的生活變得更艱難。
我將首先說不要將模式視為 OO 意義上的名稱空間或對象域。模式本質上是具有一些附加值的權限容器(見下文)
此外,“單獨的模式”或“單獨的數據庫”是 2 個不同的概念。需要事務和引用一致的數據需要位於同一個數據庫中。看到一個數據庫還是十個?部落格文章了解更多。
在該數據庫中,您可能會也可能不會使用模式來組織對象。
就個人而言,我是模式的粉絲,並且總是使用它們,但用於權限和邏輯分組之類的事情。為此,我將向您推薦以前的問題,您可以在其中看到普遍意見支持它們:
對於單獨數據庫的情況,請參閱Aaron 的回答,但這一切都取決於“事務和引用一致”的要求。