AgentSkillsCN

Databases

数据库

SKILL.md

Databases Skill

Purpose

Database design and query optimization.

When Active

User mentions database, SQL, schema, migration.

Expertise

Schema Design

  • Entity relationships
  • Normalization (1NF, 2NF, 3NF)
  • Denormalization strategies
  • Index selection

Indexing Strategies

  • Primary keys
  • Foreign key indexes
  • Composite indexes
  • Partial indexes
  • Covering indexes

Query Optimization

  • EXPLAIN analysis
  • Query patterns
  • JOIN optimization
  • Subquery vs JOIN
  • N+1 prevention

Migration Patterns

  • Version control
  • Rollback strategies
  • Data preservation
  • Breaking changes

ORM Usage

  • Prisma patterns
  • Drizzle ORM
  • Type-safe queries
  • Transaction handling

Relationship Modeling

  • One-to-one
  • One-to-many
  • Many-to-many
  • Polymorphic relations

Patterns

Prisma Schema

prisma
model User {
  id        String   @id @default(cuid())
  email     String   @unique
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

model Post {
  id        String   @id @default(cuid())
  title     String
  author    User     @relation(fields: [authorId], references: [id])
  authorId  String
}

Drizzle Schema

typescript
export const users = pgTable('users', {
  id: text('id').primaryKey().defaultRandom(),
  email: text('email').notNull().unique(),
  createdAt: timestamp('created_at').defaultNow(),
});

Transaction

typescript
await prisma.$transaction(async (tx) => {
  await tx.user.create({ data: {...} });
  await tx.post.create({ data: {...} });
});

Query with Relations

typescript
const user = await prisma.user.findUnique({
  where: { id },
  include: { posts: true }
});

Migration

bash
prisma migrate dev --name add_users_table
prisma migrate deploy

Design Principles

  • Normalize to 3NF initially
  • Add indexes for frequent queries
  • Consider denormalization for read-heavy workloads
  • Use transactions for multi-step operations
  • Foreign keys for referential integrity
  • Cascade delete/update with caution

Dependencies

  • PostgreSQL (recommended)
  • Prisma or Drizzle ORM
  • Migration tools