SuperAPI AI 工具集

database-design

数据与分析

查看项目

更新于 10-26 16:18

技能介绍

用途

该技能面向数据库 schema 的设计、评审与重构工作,也适用于规划迁移、选择数据类型与索引、制定命名规范以及进行查询优化。其流程强调先理解业务领域,再按概念→逻辑→物理三层逐步落地。

主要能力

  • 建模流程:概念层(实体、关系、业务规则)、逻辑层(属性、键、范式)、物理层(数据类型、索引、分区、引擎特性)。
  • 命名约定:表用 snake_case 复数,列用 snake_case 单数,主键 id,外键 {singular_table}id,连接表 {table1}{table2},索引 idx_{table}{column(s)},唯一约束 uq{table}_{column(s)}。
  • 规范化速查:1NF 原子列、2NF 非键列依赖完整主键、3NF 无传递依赖;仅在查询性能需要时反规范化并记录原因。
  • 数据类型选择:使用满足范围的最小类型,优先 TIMESTAMPTZ、UUID/IDENTITY,金额用 DECIMAL,避免默认 TEXT/VARCHAR(255),并注意方言差异。
  • 索引策略:始终索引外键,按 WHERE/JOIN/ORDER BY 驱动建索引,复合索引遵循最左前缀并按选择性排序,可用覆盖索引,避免过度索引影响写入。
  • 约束优先:用 CHECK、NOT NULL、UNIQUE、FOREIGN KEY ... ON DELETE 在数据库层保证完整性。
  • 迁移模式:每个迁移可回滚,一个迁移对应一个逻辑变更,不修改已上生产的迁移,使用时间戳或顺序命名。
  • 查询设计:避免 SELECT *,优化前使用 EXPLAIN ANALYZE,优先集合操作,大分页优先键集分页。

使用方式

资料提供 migrate 命令示例:生成迁移 migrate create -ext sql -dir migrations create_users,执行 migrate -database "$DATABASE_URL" up,回滚 migrate -database "$DATABASE_URL" down 1,干跑 migrate -database "$DATABASE_URL" up 1 --dry-run。方言参考文件包括 references/postgresql.md、references/mysql.md、references/mariadb.md、references/sqlite.md,以及 references/query-optimization.md。

适用场景

资料给出决策表:简单 CRUD 用规范化关系模型;报表分析用星型 schema;时序数据按时间分区或考虑专用库;全文检索用 GIN 或外部搜索;层级数据用邻接表、嵌套集或 LTREE;多租户用行级安全或租户列。选择数据库时,复杂查询与分析选 PostgreSQL,高流量读多选 MySQL/MariaDB,嵌入式与本地测试选 SQLite,需要序列或线程池等特性选 MariaDB。

限制

资料列出反模式:EAV、多态关联、自然键作主键、单表容纳一切、为每列建索引。其他具体功能、收费、平台与效果暂未提供。