1、使用方法
模式可以用多种方式组织数据。下面是一些建议使用的模式,它们也很容易在缺省配置中得到支持:
● 如果没有创建任何模式,那么所有用户都默认访问 public 模式。这样就模拟了没有模式的时候的情景。 这种设置建议主要用在只有一个用户或者数据库里只有几个合作用户的情形。 这样的设置也允许我们平滑地从无模式的环境过渡。
● 你可以为每个用户创建一个模式,名字和用户相同。要记得缺省的搜索路径从$user开始, 它会解析为用户名。因此,如果每个用户都有一个独立的模式,那么他们缺省时访问他们自己的模式。
如果你使用了这样的设置,那么你可能还想撤销对 public 模式的访问(或者删除它), 这样,用户就真的限制于他们自己的模式了。
● 要安装共享的应用(被所有人使用的表、第三方提供的额外函数等等), 我们可以把它们放到独立的模式中。只要记得给需要访问它们的用户赋予合适的权限就可以了。 然后用户就可以通过用一个模式名修饰来使用这些额外的对象,或者他们可以把额外的模式放到他们的搜索路径中。
2、移植性
在 SQL 标准里,在同一个模式里的对象被不同的用户所有的概念是不存在的。而且, 有些实现不允许你创建和它们的所有者不同名的模式。实际上, 模式的概念和用户在那些只实现了标准中规定的基本模式支持的数据库系统里几乎是一样的。 因此,许多用户考虑对名字加以修饰,使它们真正由username.tablename 组成。如果你为每个用户都创建了一个模式,这实际上就是OushuDB的行为。
同样,在 SQL 标准里也没有public模式的概念。为了最大限度地遵循标准, 你不应该使用(可能甚至是应该删除)public模式。
当然,有些数据库系统可能根本没有模式,或者是通过允许跨数据库访问来提供模式的功能。 如果你需要在这些系统上干活,那么为了最大限度的移植性,应该根本不使用模式。