Back to Skills

database-patterns

verified

Database design, query optimization, migrations, and indexing. Use when designing schemas, writing queries, or managing migrations.

View on GitHub

Marketplace

claude-code-best-practices

xiaobei930/claude-code-best-practices

Plugin

cc-best

Repository

xiaobei930/claude-code-best-practices
1stars

skills/database-patterns/SKILL.md

Last Verified

January 25, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/xiaobei930/claude-code-best-practices/blob/main/skills/database-patterns/SKILL.md -a claude-code --skill database-patterns

Installation paths:

Claude
.claude/skills/database-patterns/
Powered by add-skill CLI

Instructions

# 数据库模式技能

本技能提供数据库设计和操作的最佳实践。

## 触发条件

- 设计数据库 Schema
- 编写数据库查询
- 优化查询性能
- 管理数据库迁移
- 配置索引

## Schema 设计原则

### 命名规范

```sql
-- 表名:小写下划线,复数形式
users
order_items
user_preferences

-- 列名:小写下划线
created_at
updated_at
user_id
is_active

-- 索引名:idx_表名_列名
idx_users_email
idx_orders_user_id_created_at

-- 外键名:fk_表名_关联表
fk_orders_users
```

### 必备字段

```sql
CREATE TABLE users (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    -- 业务字段...
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    deleted_at TIMESTAMPTZ  -- 软删除
);

-- 更新时间触发器
CREATE OR REPLACE FUNCTION update_updated_at()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = NOW();
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER update_users_updated_at
    BEFORE UPDATE ON users
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at();
```

### 关系设计

```sql
-- 一对多:用户 -> 订单
CREATE TABLE orders (
    id UUID PRIMARY KEY,
    user_id UUID NOT NULL REFERENCES users(id),
    -- ...
);

-- 多对多:用户 <-> 角色
CREATE TABLE user_roles (
    user_id UUID REFERENCES users(id) ON DELETE CASCADE,
    role_id UUID REFERENCES roles(id) ON DELETE CASCADE,
    PRIMARY KEY (user_id, role_id)
);

-- 一对一:用户 -> 用户配置
CREATE TABLE user_settings (
    user_id UUID PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
    -- ...
);
```

## ORM 使用模式

### Prisma (TypeScript)

```typescript
// schema.prisma
model User {
  id        String   @id @default(cuid())
  email     String   @unique
  name      String?
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  @@index([email])
}

model Post {
  id        String   @id @default(cuid())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  String

  @@index([authorId])
}
```

```typescript
// 查询示例
// 获取用户及其文章
const userWithPosts = await prisma.user.findUnique({
  where: { id: userId },
  include: {
  

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
6880 chars