什么是模式
模式是数据库中的一个概念,可以将其理解为一个命名空间或者目录,不同的模式下可以有相同名称的表、函数等对象而不会发生冲突。提出模式的概念是为了便于管理,只要有权限,各个模式的对象可以相互调用。在postgresql中,不能同时访问不同数据库中的对象,而模式无此限制。而在Mysql中,用户可以同时访问多个database中的对象,在这一方面来说,postgresql中模式的概念和mysql中数据库概念是等价的。而在oracle中,一个用户对应一个schema。
使用模式的主要原因
- 允许多个用户使用同一个数据库而不会相互干扰
- 把数据库对象放在不同的模式下组织成逻辑组,使数据库对象更便于管理
- 第三方应用可以放在不同的模式中,这样就不会和其他对象的名字产生冲突
常用命令
--创建模式schema1。,其所属用户也为schema1
create schema authorization schema1;
--修改模式名称
alter schema schema1 rename to schema2;
--修改属主
alter schema schema1 owner to schema2;
模式的可移植性
在sql标准中,一个模式下的对象不能被不同的用户拥有,而对于oracle来说,不允许创建和所有者不同名的模式。在oracle中一个用户就是一个schema,如果在postgresql中为每个用户创建一个schema,就能与oracle兼容。而对于mysql来说,其允许跨数据库进行访问,所以没有模式这个概念。那么要和mysql兼容,就应该在postgresql中建对应的模式来兼容mysql的数据库。
参考《PostgreSQL修炼之道 从小工到专家 第2版》