数据库中Schema(模式)概念的理解

在学习数据库时,会遇到一个让人迷糊的Schema的概念。实际上,schema就是数据库对象的集合,这个集合包含了各类对象如:表、视图、存储过程、索引等。sql

若是把database看做是一个仓库,仓库不少房间(schema),一个schema表明一个房间,table能够看做是每一个房间中的储物柜,user是每一个schema的主人,有操做数据库中每一个房间的权利,就是说每一个数据库映射的user有每一个schema(房间)的钥匙。数据库

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

在MySQL中建立一个Schema和建立一个Database的效果好像是同样的,可是在SQL Server和Oracle数据库中效果又是不一样的。sqlserver

在SQL Server中,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上进行。spa

在Oracle数据库中不能新建一个schema,要想建立一个schema,只能经过建立一个用户的方法解决,在建立一个用户的同时为这个用户建立一个与用户名同名的schem并做为该用户的缺省shcema。即schema的个数同user的个数相同,并且schema名字同user名字一一 对应而且相同。orm

update:2017-3-27server

PostgreSQL中模式的概念与MySQL中Database的概念是等同的。在MYSQL中能够同事访问多个Database对象,但在PostgreSQL中只能访问一个Database对象,但在PostgreSQL中能够访问多个Scheme。对象

相关文章
相关标签/搜索