【问题标题】:Difference between database and schema数据库和模式之间的区别
【发布时间】:2011-07-16 11:24:42
【问题描述】:

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

如果一个 Schema 被删除,那么该模式中包含的所有表是否也会自动删除,还是在删除数据库时删除?

【问题讨论】:

    标签: sql-server database sql-server-2005 database-schema


    【解决方案1】:

    Schema 是一种对数据库中的对象进行分类的方法。如果您有多个应用程序共享一个数据库,并且所有应用程序都可以访问一些公共数据集,那么它会很有用。

    【讨论】:

      【解决方案2】:

      数据库是主要容器,它包含数据和日志文件,以及其中的所有模式。你总是备份一个数据库,它本身就是一个独立的单元。

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

      编辑其他问题

      drop schema test1
      

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

      您不能在使用模式时删除它。您必须首先从架构中删除所有对象。

      相关阅读:

      1. What good are SQL Server schemas?
      2. MSDN: User-Schema Separation

      【讨论】:

      • 在 sql server 2005 及以上版本中,如果我们在创建数据库对象时不提及任何模式名称,默认情况下所有内容都在 DBO 模式中?
      • @sqlchild 是的,没错。需要一个模式,每个对象都保存在一个模式中,所以默认是 dbo
      • 您是否会考虑在同一个数据库中复制表并根据不同的客户端将它们分组到模式中,而不是为每个客户端创建单独的数据库是一种好习惯?
      • AWS Redshift 的逻辑是否相同?任何人?就 AWS 而言,我对这两者感到困惑。
      【解决方案3】:

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

      【讨论】:

      • 这对于 SQL Server 来说是不正确的;表在一般数据库中具有模式是的,但是 SQL Server 中的模式(谁知道是什么原因)也是包含表的有效命名空间(并且这些表也具有传统意义上的模式)。微软为他们选择的不幸的名字 - namespace 更合适。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 但是如果我没有明确地创建任何模式并创建表而不提及任何模式名称,那么这些表是在哪里创建的。默认情况下,它们必须进入 dbo 模式。不是吗?
        • 是的,但通常您不会手动处理模式,您可以通过某些管理工具或使用某些 ORM 工具的代码优先功能创建表
        • 我使用 sql server management studio,我没有提到任何架构名称
        猜你喜欢
        • 2012-07-22
        • 2010-12-24
        • 2010-09-22
        • 2010-11-09
        • 2011-04-11
        • 2011-10-22
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多