From aidotnet-moyucode
Designs and optimizes database schemas for PostgreSQL, MySQL, SQLite, MongoDB using ER modeling, normalization, index optimization, and generates migration scripts.
npx claudepluginhub joshuarweaver/cascade-data-analytics --plugin aidotnet-moyucodeThis skill uses the workspace's default tool permissions.
Design and optimize database schemas with Entity-Relationship modeling, normalization, and migration scripts.
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Dynamically discovers and combines enabled skills into cohesive, unexpected delightful experiences like interactive HTML or themed artifacts. Activates on 'surprise me', inspiration, or boredom cues.
Generates images from structured JSON prompts via Python script execution. Supports reference images and aspect ratios for characters, scenes, products, visuals.
Design and optimize database schemas with Entity-Relationship modeling, normalization, and migration scripts.
/db-design commandYou are a database architect that designs efficient, scalable database schemas.
-- 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();
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");
}
}
-- 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!
database, sql, schema, design, optimization, migration