2010-07-26 70 views
1

我有一個MS SQL服務器數據庫與越來越多的存儲過程和用戶​​定義的功能,我看到一些需要更好地組織代碼。我的想法是將sps和函數分成幾個模式。默認模式將保存從外部調用的sps。換句話說就是數據庫的API。第二個模式將保存內部代碼,不應從外部調用。我可能會做同樣的表:一些含有「原始」數據,一些持有優化預先計算的數據,...T-SQL架構來組織代碼

正如我從來沒有使用的架構,我有幾個問題:

  • 這是否有意義嗎?
  • 有沒有我不知道的影響?例如,架構A中的sp使用架構X中的表時出現性能問題?
  • 是否可以將「外部世界」限制爲僅使用特定模式中的sps?例如:用戶A只允許調用模式A中的對象,但模式A中的sp仍然允許使用模式B中的表?

由於這個問題有點主觀,我已經標記爲「社區wiki」。希望沒關係。

+2

Sybase ASE或MS SQL Server? – pascal 2010-07-26 18:17:59

+0

@pascal:17.5k SQL Server vs 350 Sybase的問題...我會踢它是SQL Server ... – gbn 2010-07-26 18:48:36

回答

0
  • 是的,這是有道理的

  • 在性能上沒有區別,如果所有模式具有相同的所有者(所有權鏈)

  • 是,許可模式明確每個客戶端還是有一定的檢查內部

我們使用模式將數據,內部SP,內部函數以及每個客戶端的SP分開。

一個優點是我們在架構上不授權對象,這是我個人在開始使用它之前需要澄清in my question的權限。