改变生活的 PostgreSQL 模式

主要观点:分享在使用 Postgres 数据库时的一系列最佳实践,以提高工作效率和数据管理质量。
关键信息

  • 使用 UUID 作为主键,虽有排序和空间占用方面的缺点,但优点更突出,如无需与数据库协调生成、可安全外部共享等。
  • 为表添加 created_at 和 updated_at 字段,便于调试,可通过触发器自动维护 updated_at。
  • 外键约束设置为 on update restrict 和 on delete restrict,避免误操作导致数据丢失。
  • 使用模式(schemas)对表进行命名空间划分,方便管理大量表。
  • 采用枚举表(enum tables)来表示枚举类型,可方便添加值和附加元数据。
  • 表名使用单数形式,避免在查询中出现困扰。
  • 机械地命名连接表(join tables),对于无明显名称的情况可连接表名。
  • 几乎总是使用软删除(soft delete),通过 nullable 的 timestamptz 列标记删除时间。
  • 将状态表示为日志(represent statuses as a log),通过额外的表记录状态变化及时间。
  • 用 system_id 标记特殊行,方便查找。
  • 谨慎使用视图(use views sparingly),虽有便捷性但也存在问题。
  • 利用 JSON 查询(JSON Queries)一次获取所需信息,但有丢失类型信息等缺点。
    重要细节
  • 创建表和相关触发器、索引等的具体代码示例,如创建 person 表、设置 updated_at 触发器等。
  • 关于各种实践的优点和缺点的详细说明,如 UUID 的优缺点、视图的利弊等。
  • 给出了一些实际场景的应用示例,如在 pet 相关表中使用各种实践的代码。
阅读 4
0 条评论