`

什么是架构(Schema)

阅读更多
架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。

例如,为了避免名称冲突,同一架构中不能有两个同名的表。两个表只有在位于不同的架构中时才可以同名。

虽然 SQL Server 2000 包含 CREATE SCHEMA 语句,但实际上并不会像上面所定义的那样创建架构。在 SQL Server 2000 中,数据库用户和架构是隐式连接在一起的。每个数据库用户都是与该用户同名的架构的所有者。对象的所有者在功能上与包含它的架构所有者相同。因而,SQL Server 2000 中的完全限定名称的“架构”也是数据库中的用户。因此,从 SQL Server 2000 数据库中删除用户之前,管理员需要删除该用户所拥有的所有对象或更改这些对象的所有者。以包含此对象的 SQL Server 2000 数据库为例:

accounting.ap.george.reconciliation

此对象的所有者为用户“george”。如果管理员需要删除用户“george”,则必须先删除此对象或更改此对象的所有者。在后一种情况下,可以按如下方式将其重命名:

accounting.ap.sandra.reconciliation

转让对象的所有权也会更改其完全限定名称。引用 accounting.ap.george.reconciliation 的任何代码必须经过更新以反映对名称所做的更改。

在 SQL Server 2005 中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象,明确指示对象的功能。例如,除了 accounting.ap.sandra.reconciliation 外,您还可以创建名为 accounting.ap.invoice.reconciliation 的架构。因为“invoice”不是用户,所以从数据库中删除用户后,无需更改此名称。这就简化了数据库管理员和开发人员的工作。



用户架构分离的好处
1、将架构与数据库用户分离对管理员和开发人员而言有下列好处:

2、多个用户可以通过角色成员身份或 Windows 组成员身份拥有一个架构。这扩展了允许角色和组拥有对象的用户熟悉的功能。


3、极大地简化了删除数据库用户的操作。


4、删除数据库用户不需要重命名该用户架构所包含的对象。因而,在删除创建架构所含对象的用户后,不再需要修改和测试显式引用这些对象的应用程序。


5、多个用户可以共享一个默认架构以进行统一名称解析。


6、开发人员通过共享默认架构可以将共享对象存储在为特定应用程序专门创建的架构中,而不是 DBO 架构中。


7、可以用比早期版本中的粒度更大的粒度管理架构和架构包含的对象的权限。


8、完全限定的对象名称现在包含四部分:server.database.schema.object。

默认架构

SQL Server 2005 还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2000 中,首先检查的是调用数据库用户所拥有的架构,然后是 DBO 拥有的架构。在 SQL Server 2005 中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO 作为其默认架构。

当我们在Sql Server 2005中创建一个新的数据库是,其中包含有几个架构:
1、对应Sql Server 2000中默认用户名的架构:dbo\information_schema\guest
2、sys架构,该架构提供了一种访问所有系统表和视图的方法
3、每一个来自Sql Server 2000的预定义数据库角色在Sql Server 2005中都有一个架构

无论一个用户的默认架构是什么,Sql Server 2005对任何对象访问总是先检查sys架构
1、寻找sys.table1.
2、寻找default_schema.table1.
3、寻找dbo.table1.

注意当sysadmin角色中的一个登陆帐户创建一个只有一部份的名字时,架构总会是dbo

许多实体的所有权都可以转让。

分享到:
评论

相关推荐

    mysql 性能调优与架构设计 数据库Schema源码

    MySQL性能调优与架构设计是数据库管理中的关键领域,它涉及到如何优化查询速度、提高并发处理能力、确保数据安全和稳定性。在这个过程中,数据库Schema的设计起着至关重要的作用。Schema是数据库的蓝图,定义了...

    tableschema-py, 用于处理表架构的python 库.zip

    tableschema-py, 用于处理表架构的python 库 TableSchema py python 中使用表模式的库。特性Table 处理表架构所描述的数据表表示表架构的Schema表示表架构字段的Field验证表架构的validate从数据中推断表架构的i

    schemaorg, Schema.org 架构和( appengine ) 软件.zip

    schemaorg, Schema.org 架构和( appengine ) 软件 欢迎使用 Schema.org这是 Schema.org 项目存储库。 它包含了用于发布站点本身的所有模式。示例和软件,请参见 Schema.org 插件。问题和建议由 W3C Schema.org 社区...

    MySQL中information_schema是什么

    `information_schema`是MySQL中一个非常有用的工具,它可以帮助用户快速了解整个数据库系统的架构和状态。通过对`information_schema`的深入研究和应用,不仅可以提高数据库管理效率,还能有效提升数据库的安全性和...

    mongoose-schema-extend, mongoose架构继承和鉴别器密钥扩展.zip

    mongoose-schema-extend, mongoose架构继承和鉴别器密钥扩展 mongoose-schema-extend实现架构继承和可选鉴别器键,用于存储集合中不同类型的相关文档,并以正确的模型类型获取它们。通知从 0.2.1版本mongoose-schema...

    json-schema, ruby JSON架构验证程序.zip

    json-schema, ruby JSON架构验证程序 ruby JSON模式验证器这个库旨在为 ruby 提供一个接口,用于针对符合 JSON模式草案 4的JSON模式验证JSON对象。 Legacy Legacy Schema Schema Draft 和 JSON模式草

    西工大服务计算实验2-1_XML Schema

    标签"SOA"提示我们,这个实验可能与Service-Oriented Architecture(面向服务架构)有关。在SOA中,XML和XML Schema经常用于服务接口的描述和服务间的数据交换。因此,理解并正确应用XML Schema对于构建和理解SOA...

    ESI_Schema_V1i12.zip

    - ESI_Schema_V1i12.zip 包含了 EtherCAT Slave Information 的不同方面,如基本信息、基础架构、模块定义、字典和诊断信息的 XML 架构定义。 - 这些 XML 架构文件为开发 EtherCAT 应用程序、解析 EtherCAT 数据或...

    schema-validator:针对预定义架构的 YAMLJSON 文件的架构验证实用程序

    YAML/JSON 模式验证器针对预定义架构的 YAML/JSON 文件的架构验证实用程序目录命令选项命令别名 描述: Validate 是一个实用程序,用于根据预定义的架构检查 yaml/json 文件的结构。 架构应该是一个 JSON 或 YAML ...

    STAR SCHEMA完全参考手册:数据仓库维度设计权威指南

    在数据仓库领域,STAR SCHEMA是广泛采用的一种模型架构,它以其直观性和高效查询性能受到青睐。本手册旨在为读者提供一套全面、权威的指导,帮助他们理解和实施基于STAR SCHEMA的数据仓库解决方案。 数据仓库是现代...

    schema学习笔记

    ### Schema学习笔记 #### 关键概念与术语 **Schema**是一种用于定义XML文档结构和约束的语言。它通过一组规则来确保XML文档中的数据遵循特定格式和逻辑规则,从而提高数据的一致性和有效性。 #### 命名约定 - **...

    Schema:WordPress的架构插件

    什么是架构标记? 架构标记是您放置在网站上的代码(语义词汇),可帮助搜索引擎为用户返回更多信息。 因此,Schema不仅是出于SEO的原因,而且也是为了搜索者的利益。 架构关键功能 易于使用,只需最少的设置,就...

    HBASE schema design

    首先,了解HBase的架构是理解其schema设计的前提。HBase表由多个区域(regions)组成,每个区域由起始键(startKey)和结束键(endKey)定义,并分布在集群的不同节点上。区域由一系列的HDFS文件和块组成,这些块被...

    Laravel开发-laravel-api-schema

    在本文中,我们将深入探讨Laravel框架中的API开发,特别是如何使用laravel-api-schema来为API控制器的每个公共方法发布架构。Laravel是一款强大的PHP框架,它为开发者提供了优雅的工具,使得构建Web应用变得更加简单...

    AUTOSAR_MMOD_XMLSchema.zip

    智能驾驶系统依赖于复杂的软件架构,而AUTOSAR正是为这类系统提供了一个开放且可扩展的框架。 根据压缩包子文件的文件名称列表,我们可以分析以下内容: 1. "autosar.soc":这可能是AUTOSAR系统构架的描述文件,SOC...

    apacheds-schema-archetype-1.0.2.jar.zip

    Schema在LDAP中扮演着关键角色,定义了目录中的对象类和属性类型,类似于数据库的模式或架构。`schema`在Apache Directory Server中是用来规范化存储在目录中的数据结构的。 `apacheds-schema-archetype-1.0.2.jar`...

    Failed to read schema document

    标题“Failed to read schema document”通常出现在XML解析或者与XML相关的操作中,指的是在尝试读取或解析XML架构(Schema)文档时遇到了问题。这个问题可能是由于多种原因导致的,包括但不限于文件不存在、文件...

Global site tag (gtag.js) - Google Analytics