ワンクリックで
database-design
リレーショナルデータベースのスキーマ設計とマイグレーション作成。 正規化、インデックス設計、パフォーマンス考慮。 DB設計、テーブル作成、マイグレーション作成時に使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
リレーショナルデータベースのスキーマ設計とマイグレーション作成。 正規化、インデックス設計、パフォーマンス考慮。 DB設計、テーブル作成、マイグレーション作成時に使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
RESTful API の設計とドキュメント生成。 エンドポイント設計、リクエスト/レスポンス定義、OpenAPI仕様出力。 API設計、エンドポイント作成、APIドキュメント生成時に使用。
技術ドキュメントの作成と構造化。 README、API仕様書、アーキテクチャドキュメント、運用手順書。 ドキュメント作成、README生成、仕様書作成時に使用。
アプリケーションのエラーハンドリング設計と実装。 例外階層、エラーレスポンス、ログ戦略、リトライ処理。 エラー処理実装、例外設計、障害対応時に使用。
Gitコミットメッセージ作成とPR説明文生成。 Conventional Commits形式、変更内容の要約、レビューポイント整理。 コミット作成、PR作成、Git操作時に使用。
Webアプリケーションのパフォーマンス分析と最適化。 フロントエンド、バックエンド、データベースの最適化戦略。 パフォーマンス改善、速度最適化、ボトルネック解消時に使用。
Reactコンポーネントの設計と実装パターン。 関数コンポーネント、カスタムフック、状態管理、アクセシビリティ。 Reactコンポーネント作成、フロントエンド実装時に使用。
| name | database-design |
| description | リレーショナルデータベースのスキーマ設計とマイグレーション作成。 正規化、インデックス設計、パフォーマンス考慮。 DB設計、テーブル作成、マイグレーション作成時に使用。 |
| version | 1.0.0 |
スケーラブルで保守しやすいデータベース設計を支援します。
users, order_items)created_at, user_id){参照テーブル単数形}_id (user_id, order_id)idx_{テーブル}_{カラム} (idx_users_email)id -- 主キー(UUID or BIGINT AUTO_INCREMENT)
created_at -- 作成日時
updated_at -- 更新日時
| 正規形 | ルール |
|---|---|
| 1NF | 繰り返しグループなし、原子値のみ |
| 2NF | 部分関数従属なし |
| 3NF | 推移的関数従属なし |
※パフォーマンスのため意図的な非正規化はOK(理由を文書化)
-- NOT NULL: 必須項目
-- UNIQUE: 一意制約
-- FOREIGN KEY: 参照整合性
-- CHECK: 値の範囲制限
-- DEFAULT: デフォルト値
-- ユーザーテーブル例
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,
role VARCHAR(20) NOT NULL DEFAULT 'user'
CHECK (role IN ('user', 'admin', 'moderator')),
email_verified_at TIMESTAMP,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP -- ソフトデリート用
);
-- インデックス
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_role ON users(role) WHERE deleted_at IS NULL;
-- 更新日時自動更新(PostgreSQL)
CREATE OR REPLACE FUNCTION update_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER users_updated_at
BEFORE UPDATE ON users
FOR EACH ROW
EXECUTE FUNCTION update_updated_at();
-- ✅ 安全: カラム追加(NULL許容 or デフォルト値あり)
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
-- ✅ 安全: インデックス追加(CONCURRENTLY)
CREATE INDEX CONCURRENTLY idx_users_phone ON users(phone);
-- ⚠️ 注意: カラム削除(先にコードから参照を削除)
ALTER TABLE users DROP COLUMN old_column;
-- ⚠️ 注意: 型変更(データ変換が必要)
ALTER TABLE users ALTER COLUMN age TYPE INTEGER USING age::INTEGER;
-- バッチ処理でデータ移行
DO $$
DECLARE
batch_size INT := 1000;
affected INT;
BEGIN
LOOP
UPDATE users
SET new_column = old_column
WHERE new_column IS NULL
LIMIT batch_size;
GET DIAGNOSTICS affected = ROW_COUNT;
EXIT WHEN affected = 0;
COMMIT;
PERFORM pg_sleep(0.1); -- 負荷軽減
END LOOP;
END $$;
erDiagram
users ||--o{ orders : places
users {
uuid id PK
string email UK
string name
timestamp created_at
}
orders {
uuid id PK
uuid user_id FK
decimal total
string status
timestamp created_at
}