数据库和架构之间的区别


166

SQL Server中的数据库和架构之间有什么区别?两者都是表和数据的容器。

如果删除了架构,那么该架构中包含的所有表也会自动删除吗?还是在删除数据库时将其删除?

Answers:


171

数据库是主要容器,它包含数据和日志文件以及其中的所有架构。您总是备份数据库,它本身是一个离散单元。

模式就像数据库中的文件夹一样,主要用于将逻辑对象分组在一起,这使按模式设置权限变得容易。

编辑其他问题

drop schema test1

消息3729,级别16,状态1,行1
无法删除架构'test1',因为它已被对象'copyme'引用。

使用方案时,您不能删除方案。您必须首先从架构中删除所有对象。

相关阅读:

  1. SQL Server架构有什么好处?
  2. MSDN:用户架构分离

5
在sql server 2005及更高版本中,如果在创建数据库对象时不提及任何架构名称,默认情况下所有内容都在DBO架构内?
sqlchild 2011年

@sqlchild是的,这是正确的。模式是必需的,每个对象都保存在一个模式中,因此默认值为dbo
RichardTheKiwi 2011年

您是否会考虑在同一数据库中复制表并根据不同的客户端将它们分组在架构中,而不是为每个客户端创建单独的数据库,这是一个好习惯?
Yevgraf Andreyevich Zhivago 2014年

AWS Redshift的逻辑是否相同?任何人?在AWS方面,我对两者感到困惑。
Aakash Basu

19

模式是对数据库中的对象进行分类的一种方式。如果您有多个应用程序共享一个数据库,并且所有应用程序都可以访问某些通用数据集,则此功能很有用。


12

数据库就像带有模式的数据容器,而模式则是表的布局,其中包含数据类型,关系和内容


1
特别是对于SQL Server,这是不正确的。表在通用数据库中具有架构,是的,但是SQL Server中的架构(谁知道原因是什么)实际上也是包含表的名称空间(这些表也具有传统意义上的架构)。微软为他们选择的不幸名字namespace更合适。
SacredSkull

7

模式说明数据库中有哪些表,它们具有哪些列以及它们之间的关系。每个数据库都有其自己的架构。


但是,如果我没有显式创建任何架构并创建表而没有提及任何架构名称,那么表在哪里创建。默认情况下,它们必须进入dbo模式。是不是
sqlchild 2011年

是的,但是通常您不需要手动处理架构,而是通过某些管理工具或使用某些ORM工具的代码优先功能创建表
Robert

我使用SQL Server Management Studio中,我不提任何架构名称
sqlchild

4

SQL Server中的架构是一个对象,从概念上讲,它包含其他数据库对象(如表,视图,存储过程等)的定义。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.