我正在使用多个数据库模式的单个数据库,
例如
[Baz].[表3],
[Foo].[表1],
[Foo].[表2]
我想知道为什么除了组织和权限之外,这些表是以这种方式分开的.
这有多常见,还有其他好处吗?
And*_*rew 21
在逻辑分组对象方面,您可以获得主要优势,并允许在架构级别设置权限.
它确实在编程中提供了更多的复杂性,因为您必须始终知道要从哪个模式获取内容 - 或者依赖于用户的默认模式才是正确的.同样,您可以使用它在不同的模式中允许相同的对象名称,以便代码只针对一个对象进行写入,而用户默认的模式决定哪个是.
我不会说这是常见的,有趣的是大多数人仍然放弃了dbo架构中的所有内容.
除了组织和权限外,我不知道其他任何可能的原因。这些不够好吗?:)
作为记录-我始终使用单个架构-但随后创建Web应用程序时,也只有一个用户。
10年后更新!
实际上,还有另一个原因。您可以出于不同目的而拥有架构的“副本”。例如,假设您正在创建一个博客平台。人们可以注册并创建自己的博客。每个博客都需要一个用于发布帖子,标签,图像,设置等的表格。一种方法是blog_id在每个表格中添加一列
,并使用该列来区分博客。或者...您可以为每个博客创建一个新架构,为每个博客创建新表。这有几个好处:
where blog_id=@currentBlog到某个地方。当然也有缺点。
总而言之,这是一个相当不错的小众用例,但它很方便!
对我来说,他们可能会导致更多问题,因为他们打破了所有权链.
例:
存储过程很容易tom.uspFoo使用表格,tom.bar但需要额外的权限 dick.AnotherTable.这意味着我必须向... dick.AnotherTable的调用者授予选择权限,tom.uspFoo从而暴露直接表访问.
除非我完全错过了什么......
我问过一个问题:SQL Server:权限模式如何?
关键是"同一所有者":因此如果dbo拥有两者dick和tom架构,则所有权链接都适用.我之前的回答是错的.
| 归档时间: |
|
| 查看次数: |
10606 次 |
| 最近记录: |