就像标题一样,我还是SQLServer的菜鸟,当我创建一个表'Mytable'时,它在数据库中显示'dbo.Mytable'
但是谁能让我更好地理解模式?
此外,在 Server 2008 TSQL 一书中,Itzik 说“在你的数据库中,表属于模式,模式属于你自己的数据库”
那么如何定义架构呢?
就像标题一样,我还是SQLServer的菜鸟,当我创建一个表'Mytable'时,它在数据库中显示'dbo.Mytable'
但是谁能让我更好地理解模式?
此外,在 Server 2008 TSQL 一书中,Itzik 说“在你的数据库中,表属于模式,模式属于你自己的数据库”
那么如何定义架构呢?
“新风格”是使用类似于模式的命名空间。
“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
如果您是 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
在某些上下文中使用(例如用于访问链接服务器上的对象和调用用户定义函数的四部分命名)。
Schema 是 DB 对象的容器。这是一个帮助您更好地组织表格的约定。