PostgreSQL 为什么所有数据库都在 PostgreSQL 中有一个公共模式
在本文中,我们将介绍为什么在 PostgreSQL 数据库中所有的数据库都有一个公共模式。公共模式是 PostgreSQL 中默认创建的模式,它在创建数据库时自动创建,并且所有的用户都可以访问和使用它。
阅读更多:PostgreSQL 教程
什么是模式?
在理解公共模式的作用之前,我们首先需要了解什么是模式。在数据库中,模式是一种用于组织和管理对象(例如表、视图、函数、索引等)的方式。它类似于文件系统中的目录,可以将相关的对象组织在一起,并且可以根据需要进行权限管理。
在 PostgreSQL 中,每个数据库可以包含多个模式,并且每个模式可以包含多个对象。默认情况下,创建新数据库时会自动创建一个名为 “public” 的模式。
公共模式的作用
公共模式在 PostgreSQL 中有重要的作用,它可以被所有的用户访问和使用。这意味着在公共模式中创建的对象可以在整个数据库中共享和使用。
在许多情况下,公共模式可以用来存储和共享公共的对象,例如共享的函数、视图、表等。这些对象在公共模式中创建后,可以被所有的数据库用户使用,而不需要每个用户都单独创建或维护一份副本。
另外,公共模式还可以用于存储数据库的元数据信息。元数据是描述数据库结构和对象的数据,包括表、列、索引等定义信息。通过将元数据存储在公共模式中,可以实现对数据库结构的统一管理和维护。
公共模式的示例
为了更好地理解公共模式的作用,我们可以通过一个示例来演示它的用法。
假设我们有一个名为 “company” 的数据库,其中包含了多个用户和他们的数据。我们可以在公共模式中创建一个名为 “functions” 的模式,并在该模式中定义一些通用的函数。
-- 创建公共模式中的函数
CREATE SCHEMA public;
CREATE SCHEMA functions;
CREATE FUNCTION functions.calculate_bonus(salary integer, percent numeric)
RETURNS numeric AS
BEGIN
RETURN salary * percent;
END;
LANGUAGE plpgsql;
在这个示例中,我们在公共模式中创建了一个名为 “functions” 的模式,并在该模式下定义了一个名为 “calculate_bonus” 的函数。这个函数可以在整个数据库中被所有用户使用。
-- 在用户模式中使用公共模式中的函数
CREATE SCHEMA user1;
SET search_path TO user1, public;
SELECT calculate_bonus(5000, 0.1);
在用户模式中,我们可以通过设置搜索路径(search_path)为用户模式和公共模式来访问和使用公共模式中的函数。这样,在用户模式中就可以直接调用并使用公共模式中定义的函数。
总结
在本文中,我们介绍了为什么在 PostgreSQL 数据库中所有的数据库都有一个公共模式。公共模式作为默认创建的模式,可以被所有的用户访问和使用。它在存储公共的对象和数据库元数据信息方面起到了重要的作用。
通过在公共模式中创建和共享对象,我们可以减少重复的工作,并实现更好的代码复用和维护性。同时,公共模式还可以用于存储和管理数据库的元数据信息,实现对数据库结构的统一管理和维护。
希望本文对理解 PostgreSQL 中的公共模式有所帮助,并能在实际的数据库开发和管理中发挥作用。