المهارات postgresql
📦

postgresql

آمن

设计 PostgreSQL 数据库架构

متاح أيضًا من: 2025Emma,2025Emma

数据库架构设计错误会导致性能问题和数据完整性问题。此技能提供针对 PostgreSQL 的最佳实践,包括数据类型、索引、约束和可扩展性模式。

يدعم: Claude Codex Code(CC)
🥉 74 برونزي
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "postgresql". 设计一个包含 email、name 和时间戳的 users 表

النتيجة المتوقعة:

  • CREATE TABLE users (
  • user_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  • email TEXT NOT NULL UNIQUE,
  • name TEXT NOT NULL,
  • created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  • updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
  • );
  • CREATE UNIQUE INDEX ON users (LOWER(email));

استخدام "postgresql". 我应该使用 UUID 还是 BIGINT 作为主键?

النتيجة المتوقعة:

  • 在以下情况下使用 BIGINT GENERATED ALWAYS AS IDENTITY:
  • - 顺序 ID 可接受
  • - 索引性能至关重要
  • - 较小的索引大小很重要
  •  
  • 在以下情况下使用 UUID:
  • - 需要全局唯一性
  • - ID 不透明性是安全要求
  • - 从多个源合并数据

التدقيق الأمني

آمن
v1 • 2/24/2026

All 221 static analyzer findings were determined to be false positives. The skill consists entirely of markdown documentation (SKILL.md) with no executable code. Backtick characters are markdown formatting for code examples, not shell execution. References to security features like Row Level Security are PostgreSQL documentation, not Windows SAM access. The skill provides educational guidance for database schema design with no security risks.

1
الملفات التي تم فحصها
233
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
50
المجتمع
100
الأمان
91
الامتثال للمواصفات

ماذا يمكنك بناءه

新应用程序架构设计

为新的 Web 应用程序设计完整的数据库架构,包括适当的数据类型、主键、外键关系以及常见查询模式的索引。

架构审查和优化

审查现有表设计,查找性能问题、缺失的索引、不合适的数据类型或可能导致数据完整性问题的约束缺陷。

迁移规划

规划安全的架构演进,包括事务性 DDL、并发索引创建以及在不停机的情况下向大表添加列的策略。

جرّب هذه الموجهات

基本表设计
设计一个用于存储用户配置文件的 PostgreSQL 表,包含 email、name、registration date 和可选配置设置字段。使用适当的数据类型和约束。
索引策略
我有一个查询表,包含列:id、user_id、status、created_at。常见查询按 user_id 和 status 过滤,并按 created_at 降序排序。推荐索引策略。
JSONB 设计决策
我应该在 JSONB 列中存��产品属性还是创建单独的列?属性因产品类别而异,用户经常按特定属性搜索。
大表分区
我有一个事件表,每月增长 1000 万行。查询通常按 event_date 和 device_id 过滤。推荐分区策略并解释权衡。

أفضل الممارسات

  • 对所有事件时间戳使用 TIMESTAMPTZ 而不是 TIMESTAMP,以避免时区混淆
  • 在外键列上添加显式索引,因为 PostgreSQL 不会自动创建它们
  • 首先规范化到 3NF,然后仅对已证明的高投资回报率读取性能提升进行反规范化

تجنب

  • 使用带长度限制的 VARCHAR 而不是带 CHECK 约束的 TEXT
  • 在不分析实际查询模式的情况下为每列创建索引
  • 对自增列使用 SERIAL 而不是 GENERATED ALWAYS AS IDENTITY

الأسئلة المتكررة

字符串列应该使用 TEXT 还是 VARCHAR?
在大多数情况下使用 TEXT。PostgreSQL 以相同方式存储 TEXT 和 VARCHAR。如果需要长度验证,请添加 CHECK 约束而不是使用 VARCHAR(n)。
需要为外键列创建���引吗?
是的。PostgreSQL 不会自动为外键列创建索引。在外键列上添加显式索引以提高连接性能,并防止父行删除期间的锁定问题。
何时应该使用 JSONB 而不是常规列?
对可选、可变或半结构化属性使用 JSONB。将核心关系数据保留在常规列中。始终为 JSONB 列添加 GIN 索引以支持包含查询。
TIMESTAMP 和 TIMESTAMPTZ 有什么区别?
TIMESTAMPTZ 存储具有时区意识的时间戳并在内部转换为 UTC。TIMESTAMP 存储没有时区上下文的字面值。始终使用 TIMESTAMPTZ 以避免时区错误。
我应该对表进行分区吗?
对于超过 1 亿行且查询始终按分区键(如日期)过滤的表,考虑分区。分区会增加复杂性,因此仅在存在明显好处时使用。
如何安全地向大��添加 NOT NULL 列?
首先将列添加为 NULL,回填数据,然后更改为 NOT NULL。添加带有易变默认值(如 now())的 NOT NULL 会导致完整的表重写。使用非易变默认值或多步骤迁移。

تفاصيل المطور

المؤلف

sickn33

الترخيص

MIT

مرجع

main

بنية الملفات

📄 SKILL.md