当前位置:网站首页>数据库中的schema
数据库中的schema
2022-08-10 09:39:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
研究多租户的过程中涉及到了schema的概念,具体是什么呢?
schema的官方定义为:
A schema is a collection of database objects (used by auser.). Schema objects are the logical structures thatdirectly refer to the database’s data. A 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的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的。 在SQL Server 2000中,user和schema总有一层隐含的关系,让我们很少意识到其实user和schema是两种完全不同的概念,假如我们在某一数据库中创建了用户Bosco,那么此时后台也为我们默认的创建了schema【Bosco】,schema的名字和user的名字相同。 在SQL Server 2005中,为了向后兼容,当用sp_adduser存储过程创建一个用户的时候,sqlserver2005同时也创建了一个和用户名相同的schema,然而这个存储过程是为了向后兼容才保留的,当我们用create user创建数据库用户时,我们可以用该用户指定一个已经存在的schema作为默认的schema,如果我们不指定,则该用户所默认的schema即为dbo schema,dbo房间(schema)好比一个大的公共房间,在当前登录用户没有默认schema的前提下,如果你在大仓库中进行一些操作,比如create table,如果没有制定特定的房间(schema),那么你的物品就只好放进公共的dbo房间(schema)了。但是如果当前登录用户有默认的schema,那么所做的一切操作都是在默认的schema上进行。 在Oracle数据库中不能新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105690.html原文链接:https://javaforall.cn
边栏推荐
- 【数据仓库】什么是 Azure Synapse,它与 Azure Data Bricks 有何不同?
- [Metaverse Omi Says] See how UCOUCO integrates performance art into the Metaverse
- shell------ commonly used gadgets, sort, uniq, tr, cut
- Development environment variable record under win
- Guo Jingjing's personal chess teaching, the good guy is a robot
- 【元宇宙欧米说】听兔迷兔如何从虚拟到现实创造潮玩新时代
- 2022年固定资产管理系统的概况
- keepalived:主备配置
- I don't want to do accounting anymore, Die changed to a new one, moved forward bravely, and finally successfully passed the career change test to double his monthly salary~
- 【API Management】What is API Management and why is it important?
猜你喜欢
随机推荐
CatchAdmin实战教程(四)Table组件之自定义基础页面
DeepFake换脸诈骗怎么破?让他侧个身
LCD模块如何建立联系分析
并查集学习
The Generation of Matlab Symbolic Functions and the Calculation of Its Function Values
线程池的基本概念、结构、类
关于编程本质那些事
腾讯云校园大使开始招募啦,内推名额和奖金等你来拿
第三章 搜索与图论(三)
俄罗斯宣布临时禁止进口摩尔多瓦植物产品
【物联网架构】最适合物联网的开源数据库
【Software Exam System Architect】Case Analysis ⑥ Web Application System Architecture Design
关于判断单峰数组的几种方法
JVM探究
navicat导入SQL文件报:[ERR] 2006 - MySQL server has gone away [ERR] -- MySQL dump 10.13 Distrib 5.7.34
原型和原型链
【微服务架构】为故障设计微服务架构
【元宇宙欧米说】看UCOUCO如何将行为艺术融入元宇宙
「数据架构」:主数据管理(MDM)对我的行业有什么帮助?
关于镜像源的一些记录








