我读了一篇关于数据库架构的文章。
SQL Server架构是对象的容器。例如,您可能拥有一个大型企业应用程序,然后将不同的模式用于不同目的是一种很好的做法(例如,将HR相关表放入HR模式,将会计相关表放入Accounting模式等等)。架构可以由任何用户拥有,并且所有权可以转让。
他们说:为不同的目的使用不同的模式(例如将HR相关表放入HR模式,将会计相关表放入会计模式等等)
他们是指为人力资源创建新数据库还是为会计创建新数据库?
因为当我们创建数据库时,会创建一个模式,所以我不知道在单个SQL Server数据库中创建多个模式。
那么请告诉我如何在单个数据库中为不同目的创建不同的模式?感谢
答案 0 :(得分:1)
架构的目的
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数据库,我们可以在一个数据库中创建多个模式,它有“生产”,“销售”等模式。
Read here 了解有关sql server中架构的更多信息。
答案 1 :(得分:0)
不,他们是指创建架构。创建架构在数据库中工作。它有各种各样的用途,我倾向于将其视为命名空间或更自然的方式来划分小型数据库并保持基于角色的访问,您可以将模式视为用户组。
答案 2 :(得分:0)
不幸的是,数据库世界中“schema”这个词有两个含义。
一个意味着数据库表的整体设计。例如,“向我展示您的数据库架构”。这将是“创建表”命令或ERD图的集合。
另一个是“名称空间”的同义词,该文章指的是“名称空间”。您可以将表,函数等存储在不同的命名空间中,以减轻认知负载或用于安全分组。