数据库中的schema

数据库中的schema数据库中的schema

大家好,又见面了,我是你们的朋友全栈君。

         研究多租户的过程中涉及到了schema的概念,具体是什么呢?

schema的官方定义为:

schema is a collection of database objects (used by auser.). 
Schema objects are the logical structures thatdirectly refer to the databases data.
user is a name defined in the databasethat can connect to and access objects.
Schemas and users help database administratorsmanage database security.

       从定义我们可以看出:schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema。所以schema集合看上去像用户名。
       
如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是说每个数据库映射的user有每个schema(房间)的钥匙。

       默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema。所以schema集合看上去像用户名。访问一个表时,如果没有指明该表属于哪个schema,系统会自动加上缺省的schema。一个对象的完整名称为schema.object,而不属user.object

       MySQL中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserverorcal数据库中效果又是不同的。
       
SQL Server 2000中,userschema总有一层隐含的关系,让我们很少意识到其实userschema是两种完全不同的概念,假如我们在某一数据库中创建了用户Bosco,那么此时后台也为我们默认的创建了schemaBosco】,schema的名字和user的名字相同。
       
SQL Server 2005中,为了向后兼容,当用sp_adduser存储过程创建一个用户的时候,sqlserver2005同时也创建了一个和用户名相同的schema,然而这个存储过程是为了向后兼容才保留的,当我们用create user创建数据库用户时,我们可以用该用户指定一个已经存在的schema作为默认的schema,如果我们不指定,则该用户所默认的schema即为dbo schemadbo房间(schema)好比一个大的公共房间,在当前登录用户没有默认schema的前提下,如果你在大仓库中进行一些操作,比如create table,如果没有制定特定的房间(schema),那么你的物品就只好放进公共的dbo房间(schema)了。但是如果当前登录用户有默认的schema,那么所做的一切操作都是在默认的schema上进行。
       
Oracle数据库中不能新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。

 

              摘自《数据库中Schema(模式)概念的理解》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105690.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 彻底弄懂C语言数组名

    彻底弄懂C语言数组名先定义一个一维数组inta[]={0,1,2,3,4,5,6,7,8,9};一、数组名是什么数组名的值是数组首元素的指针常量。数组名不是指针,但大多数使用到数组名的地方,编译器都会把数组名隐式转换成一个指向数组首元素的指针来处理。只有两种情况下例外:第一种是对数组名使用sizeof运算符sizeof(a)这将会得到整个数组所占的内存大小,a是长度为10的int(4字节

    2022年7月11日
    22
  • MongoDB+MongoVUE安装及入门[通俗易懂]

    MongoDB+MongoVUE安装及入门[通俗易懂]前言及概念环境安装MongoDB的安装MongoVUE安装建立连接基础操作创建表添加数据查询日期查询排序Sort查询字段Fieldsskip跳过Limit分页修改删除数据前言及概念据说nodejs和mongoDB是一对好基友,于是就忍不住去学习了解了一下MongoDB相关的一些东西,那么,MongoDB是什么?这里的五件事是每个开放人员应该知道的:MongoDB是一

    2022年4月19日
    61
  • 免费下载电子书攻略大全_我被系统攻略了txt

    免费下载电子书攻略大全_我被系统攻略了txt经常帮博友们查找各种书籍,也算是攒了一些经验。在此整理下我是如何找电子书籍的,准确来说,是找书籍的网站汇总。本文借鉴了@陆浑戎,@设定控@没有我找不到的电子书等朋友的方法,在此表示感谢! 如以下内容有不当之处,还请各位指正。一、初级攻略利用网盘检索工具进行检索在此推荐几个我常用的网盘检索工具:1、西林街西林街::网盘搜索引擎,更是网盘搜索神器!

    2022年8月10日
    6
  • Charles抓包使用记录

    Charles抓包使用记录Charles抓包使用记录Charlse在Windows系统和Mac使用的不同点Charlse在Windows系统和Mac使用的不同点Windows和Mac上的使用方式基本上没有太大差异,但是对于https安全证书的安装还是有一些不同的,在Windows上安装之后需要在控制面板中找到证书管理页面,界面如下将证书到处到本地,然后再导入到“受信任的根证书颁发机构”。…

    2022年5月26日
    37
  • 2018一战硕士考研风雨路「建议收藏」

    2018一战硕士考研风雨路「建议收藏」写以此文,记录我在考研过程中的收获。(注:文章将以日记体形式呈现,文章较长,请耐心阅读)2017.7.10:考研生涯第一天今天开始我在家考研生涯的第一天,怎么说呢,这个结果还是感到有些意外的,因为我本来是计划留校学习的,但学校今年很特殊,要封校,无奈我经过认真考虑后,还是决定回家复习。第一天本想着调整下时差,早上七点起的,结果还是老样子八点半醒来了,洗漱了一下,吃完老妈做的早饭,于…

    2022年5月5日
    42
  • AngularJS总结

    AngularJS总结因为最近想学习一下ionic框架,了解到ionic是基于AngularJS语法,并且通过SASS构建应用程序,之前自己一直用Vue框架,还有Less,刚刚好趁此机会,学习一下AngularJS与SAS…

    2022年7月25日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号