database-design

ChuDiRen's avatarfrom ChuDiRen

数据库表结构设计工具。当用户需要设计数据库、创建表结构、建立实体关系或优化索引时使用。支持 MySQL、PostgreSQL 等关系型数据库。

⭐2stars🔀0forks📁View on GitHub🕐Updated Dec 26, 2025

When & Why to Use This Skill

This Claude skill automates professional database schema design, ensuring data models are normalized, scalable, and high-performing. It provides comprehensive guidance on entity-relationship modeling, standardized naming conventions, and indexing optimization for relational databases like MySQL and PostgreSQL, helping developers transition from requirements to production-ready SQL scripts.

Use Cases

  • New Project Data Modeling: Designing robust database structures from scratch for new applications, ensuring scalability and adherence to best practices.
  • Database Refactoring and Optimization: Analyzing and restructuring legacy tables to improve query performance, data integrity, and maintainability.
  • Standardized SQL Generation: Automatically creating DDL scripts with consistent naming conventions, mandatory audit fields (created_at, updated_at), and soft-delete logic.
  • Index Strategy Planning: Designing efficient indexing schemes based on query patterns to minimize latency and optimize resource usage.
namedatabase-design
description数据库表结构设计工具。当用户需要设计数据库、创建表结构、建立实体关系或优化索引时使用。支持 MySQL、PostgreSQL 等关系型数据库。

数据库设计

概述

本 Skill 用于数据库表结构设计,确保数据模型规范、可扩展、高性能。适用于任何关系型数据库。

使用场景

  • 新项目数据库设计
  • 功能模块数据建模
  • 数据库重构优化

设计流程

需求分析 → 实体识别 → 关系建模 → 表结构设计 → 索引优化 → 迁移脚本

命名规范

表名规范

规则 示例
使用小写下划线 user_role
使用单数名词 user 而非 users
关联表:两表名拼接 user_role、role_permission

字段名规范

规则 示例
使用小写下划线 created_at
主键统一命名 id
外键:表名_id user_id、role_id
布尔字段:is_前缀 is_active、is_deleted
时间字段:_at后缀 created_at、updated_at

必备字段

基础字段

id          BIGINT PRIMARY KEY AUTO_INCREMENT,  -- 主键
created_at  DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
updated_at  DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间

软删除字段

is_deleted  TINYINT DEFAULT 0,  -- 删除标记
deleted_at  DATETIME            -- 删除时间

数据类型选择

场景 MySQL PostgreSQL
主键 BIGINT BIGSERIAL
短文本 VARCHAR(N) VARCHAR(N)
长文本 TEXT TEXT
小数 DECIMAL(M,N) NUMERIC(M,N)
布尔 TINYINT(1) BOOLEAN
日期时间 DATETIME TIMESTAMP
JSON JSON JSONB

索引设计原则

  1. WHERE 条件字段:经常用于查询的字段
  2. 外键字段:关联查询必须有索引
  3. 排序字段:ORDER BY 的字段
  4. 联合索引最左原则:把区分度高的字段放前面
  5. 避免过度索引:索引会降低写入性能

索引命名规范

pk_表名           -- 主键
uk_表名_字段名    -- 唯一索引
idx_表名_字段名   -- 普通索引

输出物清单

  • 实体关系图(ER图描述)
  • 表结构设计文档 (docs/database-design.md)
  • SQL 建表脚本 (sql/schema.sql)
  • 索引设计说明
  • 初始化数据脚本 (sql/init-data.sql)