就像标题一样,我仍然是SQLServer的新手,当我创建一个表'Mytable'时,它在数据库中显示'dbo.Mytable'
但是有人能让我更好地理解架构吗?
此外,在Server 2008 TSQL一书中,Itzik说'在你的数据库中,表属于schema,schema属于你自己的数据库'
然后如何定义架构?
答案 0 :(得分:2)
如果您不熟悉SQL Server和数据库,那么架构的概念可能会令人困惑。基本的理解是:
A schema is the unit of security (as described [here][1] if you must know).
A database is the unit of backup and recovery.
如果您是SQL Server新手,安全性可能不是您的首选。您认为“用户可以访问数据库,因此数据库是安全的单位”。这不仅有意义,而且这就是有多少数据库实现安全性。
然而,它并不是特别灵活。假设我们都在数据库中工作,我想给你所有存储过程的执行权限 - 即使是我将来创建的存储过程。使用模式,很容易。我授予您对架构的执行权限,您可以使用的任何新内容。
如果我必须在数据库级别执行此操作,那么我会有一些较差的选项:
这仅作为模式如何管理数据库中的安全性的示例。通过将所有内容默认为dbo
(代表“数据库所有者”),SQL Server使它们变得非常容易使用。当你遇到需要它们的情况时,它们的力量才会变得明显。在此期间,只需习惯在某些上下文中使用dbo
(例如,用于访问链接服务器上的对象和调用用户定义函数的四部分命名)。
答案 1 :(得分:2)
“新风味”是使用类似名称空间的模式。
默认的“dbo”可以追溯到很久。
但我将模式名称视为名称的一部分。
喜欢,我从不写
Select * from Employee
我总是写
Select ColA, ColB from dbo.Employee
我会获得AdventureWorks数据库的副本,它有很好的例子。
修改.......... 强>
Microsoft SQL Server 2005引入了数据库对象模式的概念。模式类似于用于存储数据库对象的单独名称空间或容器。安全权限适用于模式,使其成为基于访问权限分离和保护数据库对象的重要工具。对于数据库的安全相关管理,模式可以减少所需的工作并提高灵活性。
http://msdn.microsoft.com/en-us/library/dd283095%28v=sql.100%29.aspx
答案 2 :(得分:1)
Schema是DB对象的容器。这是一个帮助您更好地组织表格的约定。