postgreSQL入门

schema(模式):就类比于一个文件系统的目录,一个数据库中包含一个或多个命名的模式,模式中又包含表,还包含其他的对象,包括数据类型、函数以及操作符等。同一个对象名可以在不同的模式中使用而不会导致冲突,例如schema和MySchema中包含名称为myTable的表。一个用户可以访问他所连接的数据库中的任意模式中的对象,只要他有权限。

使用schema的原因:

1、允许多个用户使用同一个数据库而不会干扰其他的用户。

2、把数据库对象组织成逻辑组,便于管理。

3、第三方的应用可以放在不同的模式中,就不会存在名字冲突。

4、模式类似于文件系统的目录,只是模式不能够嵌套。

在创建表时,如果没有指定它所在的schema,那么表会自动归属到一个叫做public的schema中。每个数据库都有一个叫public的schema。

模式和权限:

1、默认情况下,用户不能访问不归他所有的模式,如果想要访问,那么模式所有者必须把Usage权限赋出去。

2、用户如果具备了别的模式上的Create权限,可以在别的模式中创建对象。

3、默认情况下,每个用户都有public模式下的Usage和Create权限。

System Catalog模式:

1、除了public和用户创建的模式之外,每个数据库都有一个pg_catalog模式。

2、这个模式中包含系统表、内建的类型、函数、操作符。

3、pg_catalog总是搜索路径中的一部分,如果搜索路径中没有显式的包含它,则搜索时,它实际会比搜索路径中的模式先被搜索。这样能够优先使用内置类型等。也可以将其放在搜索路径的末尾,以优先搜索自己定义的类型。

4、最好不要创建以pg_开头的表,因为系统表一般会以pg_开头,在检索时,因为pg_catalog优先,你写的以pg_开头的与某个系统表同名的表会被优先当成要访问的系统表。

5、可以为每个用户创建一个和用户名相同的模式,搜索路径中第一个默认为$user的话,如果每个用户有自己的模式的话,用户会优先访问自己的模式下的数据。如果这样做,应该把对public模式的访问权限去掉,以确保每个用户使用自己模式下的数据。

 

 

你可能感兴趣的:(postgreSQL入门)