Database和Schemas

数据库(DATABASE)与模式(SCHEMA)的关系

模式(schema)是对数据库(database)逻辑分割。

在数据库创建的同时,就已经默认为数据库创建了一个模式-public,这也是该数据库的默认模式。所有为此数据库创建的对象(表、函数、试图、索引、序列等)都是在这个模式中的。

数据库是被模式(schema)来切分的,一个数据库至少有一个模式,所有数据库内部的对象(object)是被创建于schema的。


如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是说每个数据库映射的user有每个schema(房间)的钥匙。

img

创建数据库

在RDS中我们将看到已经存在一些数据库,例如数据库rdsadmin是供 RDS/Aurora 控制平面使用的数据库。

在pgAdmin中创建一个新的database:

image-20231104193150972

命名为first_database

image-20231104194543624

请注意数据库有一个所有者。该角色可以控制该数据库的权限并将其分配给其他角色。所有者默认为当前使用 pgAdmin 登录的角色。大多数 PostgreSQL 对象创建后也可以更改它们的所有者。

切到Definition页面,这里可以设置很多配置,我们暂时不作更改:

image-20231104194556839

切到SQL页面,SQL 选项卡展示将要生成的 SQL 命令的预览:

image-20231104194609869

最后点击Save。在左侧看到新创建的数据库:

image-20231104194630466

Schema

使用schema的原因有多种:

  • 允许多个用户使用同一个数据库而不互相干扰。
  • 将数据库对象组织成逻辑组以使它们更易于管理。
  • 第三方应用程序可以放入单独的schema中,这样它们就不会与其他对象的名称发生冲突。

展开Schema,看到已经存在一个默认的public。这里我们创建一个新的schema:

image-20231104194832943

命名为first_schema,请注意schema有一个所有者,并且还具有在schema中创建新对象的权限(如果需要,可以单击“security”选项卡和“default privileges”选项卡):

image-20231104194903546

点击Save进行创建。

View

视图(view) 是已命名的查询,它提供了另一种在数据库表中显示数据的方式。视图是基于一个或多个表来定义的,这些表被称为基表。当你创建一个视图时,基本上是创建一个查询并为其分配一个名称,因此视图对于包装一个常用的复杂查询很有用。

请注意,普通视图不会存储任何数据,物化视图除外。在 PostgreSQL 中,可以创建一个特殊视图,称为物化视图,物理存储数据并定期从基表中刷新数据。物化视图在很多情况下都有很多优点,例如更快地访问远程服务器的数据,数据缓存等等。主要用于需要快速访问数据的场景,如数据仓库 和商务智能应用中。