- Published on
PostgreSQL Schema:数据库中的文件夹
- Authors

- Name
- Terry
这就是 Schema
你知道吗?当我们设计 Mac 的时候,我们想要的很简单:让复杂的技术变得优雅、直观。
PostgreSQL 的 schema 就是这样一个设计。
Schema 就是数据库里的文件夹。 就这么简单。
你不会把所有文件都扔在桌面上,对吧?你会创建文件夹:工作、个人、照片。Schema 做的就是同样的事情,只不过是在数据库里。
为什么它很重要
想象一下,你有一个数据库。里面有成百上千张表、视图、函数。如果全部混在一起,那将是一场灾难。
Schema 解决了三个根本问题:
1. 组织
就像你把照片放在"照片"文件夹里,把文档放在"文档"文件夹里一样,你可以把销售相关的表放在 sales schema,把物流相关的放在 logistics schema。
-- 清晰、有序、优雅
sales.orders
sales.customers
logistics.shipments
logistics.warehouses
2. 隔离
不同的 schema 可以有同名的表。sales.users 和 hr.users 可以和平共处。没有冲突,没有混乱。
3. 权限
你可以让销售团队只访问 sales schema,让财务团队只访问 finance schema。简单、安全、可控。
它是如何工作的
PostgreSQL 给你一个默认的 schema,叫做 public。这就像你的"文档"文件夹。
但你可以创建更多:
-- 创建一个新的 schema
CREATE SCHEMA sales;
-- 在这个 schema 里创建表
CREATE TABLE sales.orders (
id SERIAL PRIMARY KEY,
product_name TEXT,
amount DECIMAL
);
-- 访问它
SELECT * FROM sales.orders;
看到了吗?sales.orders。就像 文件夹/文件 一样直观。
真实世界的应用
多租户系统
为每个客户创建一个 schema。tenant_apple、tenant_google。数据完全隔离,但都在同一个数据库里。优雅。
模块化架构
按功能划分:user、order、payment、analytics。每个团队管理自己的 schema。清晰明了。
开发环境dev、staging、production。同一个数据库,不同的 schema。测试不会影响生产。
删除也很简单
-- 删除一个 schema 及其所有内容
DROP SCHEMA sales CASCADE;
就像删除一个文件夹。干净利落。
最后的想法
好的设计不是添加更多功能,而是让复杂的事情变得简单。
Schema 不是什么高深的技术。它就是一个文件夹。但正是这种简单,让它如此强大。
它让你的数据库有序、安全、可扩展。
这就是我们一直追求的:简单即完美。
记住这个层级关系:
数据库(Database)
└── Schema(文件夹)
└── 表/视图/函数(文件)
就这么简单。就这么优雅。
现在,去创建你的第一个 schema 吧。