2010-07-26 37 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的权限。