用户(user)

  A user is a name defined in the database that can connect to and access objects.

用户是定义在数据库中的一个名字,可以访问数据库对象

 

模式(schema)

  A schema is a collection of database objects (used by a user.). Schema objects are the logical structures that directly refer to the database’s data.
模式是数据库对象的集合。模式对象是直接引用数据库数据的逻辑结构

  

  一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。

       Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决 (Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schema并作为该用户的缺省 shcema。

 

User1

User2

User3

Schema1

Y

Schema2

Y

Schema3

Y

  一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的schema名。比如我们在访问数据库时,访问scott用户下的emp表,通过 select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。

  在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象 的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。

 

个人总结:

虽然名字相同并且一一对应,但user和schema原本就是不同的东西(一个是数据库中定义的名字,一个是数据库中对象的集合)也是为实现不同功能而存在的

 

参考

http://blog.sina.com.cn/s/blog_7952e89001010jlj.html