架构: 一个容器 包含表,视图,数据库对象等等。 相当于命名空间

如何创建一个架构:

1. 图形向导

2.命令

create schema

在sqlserver 2005中,可能大家在工作或学习的时候会经常发现这样一些问题,你使用一个账户在数据库中创建了一张表,却发现你自己创建的表却没有修改和查询的权限,这是一件很郁闷的事情,在sqlserver2000中却不存在这样的问题,那为什么在2005中会出现这样的事情,这样的设置可以带来哪些好处?其实导致这一问题的原因主要在于2005中多了一个新的概念—架构。

首先我们来看一下msdn中对架构的定义:架构(Schema)是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。在这里,我们可以将架构看成一个存放数据库中对象的一个容器。

架构实际上在sqlserver2000中就已经存在,当我们使用查询分析器去查询一个表的时候,一个完整的表的名称应该包括服务器名.数据库名.用户名.对象名,而在sqlserver2005中一个表的完全限定名称应该为服务器名.数据库名.架构名.对象名

在2000中,假如有一个账户tt在test数据库中创建了一张表table1的时候,在服务器上对查询的语句应为select * from test.tt.table1,也就是说,在sqlserver 2000中一张表所属的架构默认就是表的创建者的登录名称,用户可以和修改他所创建的所有数据库对象。但在2005中已经将用户和其创建对象所属架构的关联取消了,而加入了一个全新的架构体系,这样做的优点主要在于下面几个方面:

1.  多个用户可以通过角色(role)或组(Windows groups)成员关系拥有同一个架构。在2005中,每个数据库中的固定数据库角色都有一个属于自己的架构,如果我们创建一个表,给它指定的架构名称为db_ddladmin,那么任何一个属于db_ddladmin中的用户都是可以去查询、修改和删除属于这个架构中的表,但是其它不属于这个组的用户是不行的,有一点必须注意,db_dbdatareader组的成员可以查看所有数据库中的表,db_dbdatawriter组成员可以修改所有数据库中的表,db_owner组成员可以对数据库所有表进行所有操作,这几个组的成员可以通过角色获取到在数据库中的特殊权限。

2.  删除数据库用户变得极为简单。在 SQL Server 2000 中,用户(User)和架构是隐含关联的,即每个用户拥有与其同名的架构。因此要删除一个用户,必须先删除或修改这个用户所拥有的所有数据库对象,就比如一个员工要离职要删除他的账户的时候,还得将他所创建的表和视图等都删除,影响过大。将架构和对象者分离后就不在存在这样的问题,删除用户的时候,对数据库对象是没有任何影响的。

3. 共享缺省架构使得开发人员可以为特定的应用程序创建特定的架构来存放对象,这比仅使用管理员架构(DBO schema)要好。

4. 在架构和架构所包含的对象上设置权限(permissions)比以前的版本拥有更高的可管理性。

5. 区分不同业务处理需要的对象,例如,我们可以把公共的表设置成pub的架构,把销售相关的设置为sales,这样管理和访问起来更容易.

大多数用户在创建对象的时候习惯直接输入对象名而将对象的架构名称省略,在2005中,会给用户创建的这样的表加上一个缺省的架构,用户如果没有对自己的默认架构做设置,那缺省架构就是dbo,也就是说,如果一个db_ddladmin的成员在数据库中创建一个没有加上架构名称的表,这个表在数据库中的完整名称应该是dbo.表名,创建者在数据库中如果不是属于其它特殊组的成员,是不能对自己创建的表进行任何修改和查询的,那就相当于把自己赚的钱存进了别人的银行卡,自己却取不出来。

全文索引:http://yrq205.blog.163.com/blog/static/4767214020112891835368/

最新文章

  1. Android--split()分割字符串特殊用法
  2. 我的c++学习(11)数组和指针
  3. CocoaPods安装和使用
  4. IOS开发中有用的第三方库
  5. phpMyAdmin在Mac OS X上的配置和使用
  6. HTTP协议简介1
  7. CSS+DIV常用命名
  8. JavaScript学习小结(一)——JavaScript入门基础
  9. spring的三种注入方式
  10. C(n,k)在n个不重复数中获得k个数
  11. onload ready
  12. Google I/O 2014? No,Android I/O 2014
  13. STM32F412应用开发笔记之八:迪文串口屏显示驱动
  14. 将luarocks整合进openresty
  15. Windows ML,系统内置的机器学习平台初探
  16. 在码云(gitee)上展开程序类课程教学
  17. MathJax: 让前端支持数学公式
  18. Effective Java 第三版——51. 仔细设计方法签名
  19. hdu1695 GCD 容斥原理
  20. 【转】HBase架构解析

热门文章

  1. node.js入门(三)调式
  2. 认识Java里面的Thread
  3. 使用mysqlbinlog工具进行基于位置或时间点的数据恢复
  4. View的工作原理(一)——Measure
  5. 在Django里查询数据库时,如何按照desc倒序返回数据?
  6. Qt4.7文档翻译:Qt样式单参考,Qt Style Sheets Reference(超长,超全)
  7. 点击页面其它地方隐藏该div的两种思路
  8. mysql 开启事务
  9. 全选demo
  10. 使用httpwatch抓包