【问题标题】:Regarding the purpose of database schema关于数据库模式的目的
【发布时间】:2014-02-08 15:06:34
【问题描述】:

我读了一篇关于数据库架构的文章。

SQL Server 架构是对象的容器。例如,您可能有一个大型企业应用程序,然后将不同模式用于不同目的是一个很好的做法(例如,将 HR 相关表放入 HR 模式,将会计相关表放入会计模式等)。架构可以由任何用户拥有,并且所有权是可以转让的。

他们说:为不同的目的使用不同的模式(例如,将 HR 相关表放入 HR 模式,将会计相关表放入 Accounting 模式等)

他们的意思是为 HR 和会计创建新数据库吗?

因为当我们创建数据库时,会创建单个架构,因此据我所知,我们无法在单个 SQL Server 数据库中创建多个架构。

那么请告诉我如何在一个数据库中为不同目的创建不同的模式?谢谢

【问题讨论】:

  • 定义:数据库模式是描述数据库中关系的元数据的集合。模式可以简单地描述为数据库的“布局”或概述数据组织成表的方式的蓝图。模式通常使用结构化查询语言描述为一系列 CREATE 语句,可用于在新数据库中复制模式。
  • 当然可以您可以在单个数据库中创建多个模式!只需查看 Microsoft 提供的 AdventureWorks 示例数据库 - 它包含多个架构,适用于企业的不同领域。

标签: sql-server database-schema


【解决方案1】:

架构的目的

sql server 2005中引入了sql server中的Schemas,主要目的是为了消除用户对sql server中对象的所有权。或者您可以说将用户与 sql server 中的对象分开。

在 Sql server 2005 之前,sql server 中的对象(表、视图、存储处理器等)归用户所有。通常是创建它的用户。

并且该用户必须授予其他用户使用该特定对象的权限。

想象一个场景,12 名开发人员在一家公司工作,所有开发人员都在左右中心创建 sql 对象。现在所有的开发者都必须向其他 11 位开发者授予权限,如果他们必须使用由该一位开发者创建的对象。是不是有点乱??

由于 sql server 2005 带有 Schema。所有对象都由架构而非用户拥有。如果您尚未创建任何自定义架构,它将位于默认架构dbo 下。

现在任何有权访问 dbo 架构的人都可以访问 dbo 架构下的任何对象。

为什么在您的案例中为不同的部门创建不同的架构是个好主意。这可能是因为人力资源人员不需要了解财务方面的任何事情。因此您可以创建 HR 架构并仅授予 HR 人员对 HR 架构的权限。财务人员反之亦然。这将限制他们只能访问与其部门相关的对象。

如果您曾经使用过 Adventureworks 数据库,我们可以在一个数据库中创建多个模式,它具有“生产”、“销售”等模式。

Read here 了解有关 sql server 中架构的更多信息。

【讨论】:

  • 所以可以在单个数据库中创建多个模式......如果是,那么告诉我如何将表、视图、函数等 db 对象逻辑分组到特定模式。我想知道我怎么能将 HR 相关对象分配给 HR 模式或将财务相关的所有对象分配给帐户模式。谢谢
  • 这是您需要自己做的事情,同时牢记客户的要求。拿一张纸开始在该纸上设计数据库,为每个部门创建单独的模式,仅特定于该部门的表将它们保留在该部门模式下,所有部门都将使用的表将它们保留在默认的 dbo 模式中.在每个架构下创建其他对象,并授予用户对其相关架构的权限......等等......
【解决方案2】:

不,他们的意思是创建一个架构。创建模式在数据库中工作。它有各种各样的用途,我倾向于将其视为命名空间或更自然的方式来划分小型数据库并保持基于角色的访问,您可以将架构视为用户组。

【讨论】:

    【解决方案3】:

    不幸的是,数据库世界中的“模式”一词有两种含义。

    一是指数据库表的整体设计。例如,“显示您的数据库架构”。这将是“创建表”命令或 ERD 图的集合。

    另一个是“命名空间”的同义词,有问题的文章指的是它。您可以将表、函数等存储在不同的命名空间中,以减轻认知负担或用于安全分组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多