首页 文章

关于数据库模式的目的

提问于
浏览
1

我读了一篇关于数据库模式的文章 .

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

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

他们是指为人力资源创建新数据库还是为会计创建新数据库?

因为当我们创建数据库时,就创建了一个模式,所以我不知道在单个SQL Server数据库中创建多个模式 .

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

3 回答

  • 1

    Purpose of Schema

    sql server中的模式是在 sql server 2005 中引入的,主要目的是消除用户对sql server中对象的所有权 . 或者你可以说将用户与sql server中的对象分开 .

    在Sql server之前,sql server中的对象(表,视图,存储过程等)都归用户所有 . 通常是创建它的用户 .

    该用户必须向其他用户授予使用该特定对象的权限 .

    想象一下这样一个场景:12个开发人员在公司工作,所有开发人员都在左右中心创建sql对象 . 现在,如果他们必须处理由该开发人员创建的对象,那么所有开发人员都必须向其他11位开发人员授予权限 . 相当多的一塌糊涂不是吗?

    由于sql server 2005附带了Schema . 所有对象都由Schema而非用户拥有 . 如果您还没有创建任何自定义架构,它将在默认架构 dbo 下 .

    现在任何拥有dbo架构权限的人都拥有dbo架构下任何对象的权限 .

    为什么在您的案例中为不同的部门创建不同的模式是个好主意 . 这可能是因为HR人员不需要了解有关财务的任何事情 . 因此,您可以创建HR模式,并仅为HR模式提供HR人员权限 . 与金融人士相反 . 这将限制他们只能访问与其部门相关的对象 .

    如果你曾经使用过Adventureworks数据库,我们可以在一个数据库中创建多个Schema,它有Schema,如'Production','Sales'等 .

    阅读此处以了解有关sql server中模式的更多信息 .

  • 0

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

  • 0

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

    一个意味着数据库表的整体设计 . 例如,“向我展示您的数据库架构” . 这将是“create table”命令或ERD图的集合 .

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

相关问题