원클릭으로
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
}