Database Designer
设计和优化数据库模式,支持PostgreSQL、MySQL、SQLite和MongoDB。包括ER建模、规范化、索引优化和迁移脚本生成。
by aidotnet · MIT
The skill
设计和优化数据库模式,支持PostgreSQL、MySQL、SQLite和MongoDB。包括ER建模、规范化、索引优化和迁移脚本生成。
Database Designer Skill
Description
Design and optimize database schemas with Entity-Relationship modeling, normalization, and migration scripts.
Trigger
/db-designcommand- User requests database schema design
- User needs migration scripts
Prompt
You are a database architect that designs efficient, scalable database schemas.
PostgreSQL Schema Example
-- Users table
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
name VARCHAR(100) NOT NULL,
avatar_url TEXT,
email_verified BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Create index for email lookups
CREATE INDEX idx_users_email ON users(email);
-- Posts table with foreign key
CREATE TABLE posts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
title VARCHAR(255) NOT NULL,
content TEXT,
status VARCHAR(20) DEFAULT 'draft' CHECK (status IN ('draft', 'published', 'archived')),
published_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Composite index for user's posts
CREATE INDEX idx_posts_user_status ON posts(user_id, status);
-- Full-text search index
CREATE INDEX idx_posts_search ON posts USING GIN(to_tsvector('english', title || ' ' || content));
-- Updated_at trigger
CREATE OR REPLACE FUNCTION update_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER users_updated_at
BEFORE UPDATE ON users
FOR EACH ROW EXECUTE FUNCTION update_updated_at();
Entity Framework Core Migration
public class CreateUsersTable : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Users",
columns: table => new
{
Id = table.Column<Guid>(nullable: false, defaultValueSql: "gen_random_uuid()"),
Email = table.Column<string>(maxLength: 255, nullable: false),
PasswordHash = table.Column<string>(maxLength: 255, nullable: false),
Name = table.Column<string>(maxLength: 100, nullable: false),
CreatedAt = table.Column<DateTime>(nullable: false, defaultValueSql: "NOW()")
},
constraints: table =>
{
table.PrimaryKey("PK_Users", x => x.Id);
});
migrationBuilder.CreateIndex(
name: "IX_Users_Email",
table: "Users",
column: "Email",
unique: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(name: "Users");
}
}
Index Optimization Guidelines
-- Good: Selective index on frequently queried column
CREATE INDEX idx_orders_status ON orders(status) WHERE status = 'pending';
-- Good: Covering index for common query
CREATE INDEX idx_orders_user_date ON orders(user_id, created_at DESC) INCLUDE (total, status);
-- Avoid: Index on low-cardinality column
-- CREATE INDEX idx_users_active ON users(is_active); -- Only 2 values!
Tags
database, sql, schema, design, optimization, migration
Compatibility
- Codex: ✅
- Claude Code: ✅
Use this skill
Connect your agent to the Skill Store MCP server and ask for it by ref: aidotnet/database-designer-19512608010.
Details
- Publisher
- aidotnet
- Category
- Data & Analytics › Databases & SQL
- License
- MIT
- Updated
- 2026-01-28
References
More from aidotnet
- Api Designer 设计RESTful API并生成OpenAPI/Swagger规范文档,遵循行业最佳实践。包括端点命名、请求/响应模式和错误处理模式。
- Ci Cd Generator 为GitHub Actions、GitLab CI、Azure DevOps和Jenkins生成CI/CD流水线,包含构建、测试、部署阶段、缓存和密钥管理。
- Code Review 全面的代码审查技能,分析代码质量、识别问题、安全漏洞,并提供带严重性评级的改进建议。
- Docker Compose 创建和管理多容器应用的Docker Compose配置,包含生产级设置、健康检查和网络配置。