【问题标题】:What are the implications of creating tables in a database with different schemas?在具有不同模式的数据库中创建表的含义是什么?
【发布时间】:2014-01-21 18:39:16
【问题描述】:

我正在创建一个包含大约 40 个不同表的数据库。

我听说有人将表分组到数据库“模式”中 - 在数据库中使用不同模式有什么影响?来自一个模式的表是否仍然与另一个模式相关?不同架构之间的功能差异是什么?

【问题讨论】:

标签: sql-server schema


【解决方案1】:

模式位于 SSMS 中的什么位置?它们被正确地放置在安全选项卡下。

让我们使用 AdventureWorks 数据库。

如果您在架构级别分配安全性,采购用户将只能访问采购表,而销售人员将只能访问销售表。

事实上,如果你设置正确,他们甚至不会看到其他表。

如果您将架构与在文件组上创建表/索引相结合,现在您可以将所有销售人员置于文件组销售和文件组采购上。

IE - 分散 I/O 负载。

简而言之,我认为模式是一个未知且很少使用的功能。

查看我关于这个事实的博客文章。

http://craftydba.com/?p=4326

【讨论】:

    【解决方案2】:

    我假设您在谈论 SQL Server。您可以在不同模式中的表之间连接和引用。我看到它主要用于视觉组织和/或管理对象的权限(您可以在架构级别分配权限)。

    如果您担心执行 dbo.table 与 custom.table 的任何负面影响 - 我想您不会遇到任何负面影响。

    【讨论】:

    • 权限是什么意思?在允许不同的登录访问数据方面?
    • 一个模式也可以跨越多个数据库吗?在某处我读到架构就像一个“蓝图”,但这与我在这里阅读的内容不符..
    • 架构拥有所有者,您可以授予/拒绝对架构的访问权限,而不仅仅是对数据库的访问权限。请记住,某些 RDBMS 使用术语“模式”作为“数据库”的等价物(即 MySQL)。您可以拥有多个具有相同名称的模式的数据库;但是,这些模式彼此之间没有实际/物理关系。
    • 用于安全和管理。是的,您可以在两个模式中拥有两个同名的表。例如,[ACTIVE] 和 [STAGE]。它还为表格增添了更多意义。
    【解决方案3】:

    模式只是数据库对象的集合。它们对于保持对象集的分离很有用。

    总是至少有一个模式。对于 SQL Server,它被命名为 dbo

    拥有多个架构的一个含义是您必须管理各种架构的权限。这通常通过与架构关联的角色来完成。

    一个模式中的对象可用于另一个模式中的对象,编写使用来自多个模式的对象的查询不会降低性能。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多