数据库中的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Jetson TX1开发笔记(二):TX1开发前必做的几件事

    Jetson TX1开发笔记(二):TX1开发前必做的几件事转载请注明作者和出处:http://blog.csdn.net/c406495762嵌入式平台:JestonTX1

    2022年6月23日
    25
  • 最大似然估计的分布函数_二项分布的最大似然估计值怎么求

    最大似然估计的分布函数_二项分布的最大似然估计值怎么求原因今天晚上,老师在看LDA数学八卦的时候,问我一个问题,如下图所示:这个多项式分布的参数,采用极大估计是怎么求的呢?当时想了想还真不知道,于是在网上找了资料,学习了一下,特此记录。公式推导很多情况下,假定一个变量XX有kk个状态,其中k>2k>2,每个状态假定的可能性为p1,p2,⋯,pkp_{1},p_{2},\cdots,p_{k},且∑ki=1pi=1\sum_{i=1}

    2022年10月12日
    3
  • 为什么Redis选择6379作为默认端口号?[通俗易懂]

    为什么Redis选择6379作为默认端口号?[通俗易懂]6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女AlessiaMerz的名字。MERZ长期以来被antirez及其朋友当作愚蠢的代名词。Redis作者antirez同学在twitter上说将在下一篇博文中向大家解释为什么他选择6379作为默认端口号。而现在这篇博文出炉,在解释了Redis的LRU机制之后,向大家解释了采用6379作为默认端口的原因。原博文:http://anti…

    2022年5月27日
    98
  • android开发之蓝牙主动配对连接手机

    上一篇介绍了手机配对连接的三种方式,这篇以完整的一个代码实例介绍如何搜索周围的蓝牙设备,以及主动配对,连接。package jason.com;import java.io.IOException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;import

    2022年3月10日
    58
  • linux查看pid 对应的程序_用户程序可以在内核态下运行吗

    linux查看pid 对应的程序_用户程序可以在内核态下运行吗进程pid和ppid、进程的uid和euid、用户的uid和gid、文件的创建者和所有者的关系辨析1、当我们创建用户时,由我们为新建用户命名和设置密码,同时系统会为我们所创建的用户名关联一个号,就是所谓的用户uid。同时我们还可以把这个用户放到某个用户群里,类似的,用户群也可以我们手工建立。如果建立用户时,不指明所建的用户属于哪个用户群,则系统会自动建立一个跟用户名同名的用户群。不管手工建立还是自…

    2025年6月1日
    3
  • 26款 网络会议/视频会议开源软件

    26款 网络会议/视频会议开源软件转自:http://www.oschina.net/project/tag/227/video-conferencing?lang=0&os=0&sort=view&p=1视频

    2022年6月30日
    31

发表回复

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

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