内部アプリ向けデータベース&スキーマデザイナー(エンティティ → リレーション → バリデーションルール)
ワークフローに合わせた制約、インデックス、RLSノート、サンプルシードデータ付きの正規化されたPostgresスキーマを作成します。
プロンプト概要
注目のAIパートナー
あなたへのヒント
すべてのテーブルにcreated_at/updated_atを追加;外部キーにインデックスを付与;承認状態の遷移を明示的にモデル化;移植性のために列挙型はチェック制約に保持。
運用チームよりNexusAi Technology解決する課題
アドホックなテーブルは後のデータ問題を引き起こします。これにより、堅牢なスキーマとバリデーション計画を事前に作成します。
本番用DDL
制約付きのすぐに使えるPostgres SQL。
RLS設計図
最小権限に沿ったロールポリシー。
インデックス計画
ホットパスのパフォーマンスノートとインデックス。
シードデータ
即時テスト用のリアルな挿入データ。
AIプロンプト指示
役割: Supabaseを使用した内部CRUDおよび承認システム向けのPostgres専門のデータアーキテクトとして行動してください。
このタスクが重要な理由: 良いスキーマは重複データ、壊れた承認、遅いクエリを防ぎます。明確な制約は操作と監査を保護します。
重要な境界条件:
- ホットリードのために実用的な非正規化を用いた3NFを優先します。
- データ整合性はUIだけでなくデータベースで強制します。
- 適用可能な場合はorg_idまたはproject_idによるマルチテナント対応を想定します。
ユーザー入力:
- キーフィールドを含むエンティティリスト
- リレーションシップと承認状態
- クエリのホットスポットとレポート要件
- セキュリティモデル(ロールとアクセスルール)
目的:
1) エンティティとリレーションシップの正規化。
2) 主キー/外部キー、一意制約、チェック制約の提案。
3) 重要なクエリのためのインデックス定義。
4) Supabase用のRLSポリシーと認証ノートの概要。
5) シードデータとマイグレーションスクリプトの概要提供。
分析ワークフロー:
1) エンティティ/状態マップを作成しライフサイクルイベントを特定。
2) 各エンティティについて、カラム、型、NULL許容、デフォルトを定義。
3) 制約とカスケード動作を指定。
4) 理由を添えてBTREE/GINインデックスを提案。
5) ロールごとにSELECT/INSERT/UPDATE/DELETEのRLSポリシーを作成。
6) SQL DDLとシード挿入例を提供。
必要な出力形式:
- ER概要(テキスト)
- コメント付きSQL DDLブロック
- RLSポリシーリスト
- インデックス計画と理由
- シードデータ例
- マイグレーションチェックリスト
品質管理:
- すべての外部キーにインデックスが付与されている。
- 曖昧なNULL許容外部キーがない。
- 列挙型/状態に対するチェック制約。
検証チェックリスト:
- 各ロールのCRUDパスがサポートされている。
- 重要なクエリがインデックスでカバーされている。
- RLSはデフォルトでクロステナントアクセスを拒否。
最終指示: 本番対応のSQLと簡潔なSupabaseセットアップチェックリストを出力してください。
期待される成果
ER概要: org、user、role、request、approval、comment。リクエストは状態を持つ:draft、submitted、approved、rejected。 SQL DDL: create table org (...); create table request (..., org_id uuid references org(id) on delete restrict, state text check (state in ('draft','submitted','approved','rejected'))); インデックス: request(org_id, state)に対するインデックス、request(search_tsv)に対するGINインデックス。 RLS: requestで有効化; select用のorg_readポリシーは (org_id = auth.org_id()) を使用。
実装ステップ
ChatGPTでスキーマ設計
エンティティリスト、リレーションシップ、ロールマトリックスをChatGPTに貼り付けます。プロンプトを実行してERノート、制約付きSQL DDL、RLSポリシーを取得します。インデックスの理由を確認してください。
25 minSupabaseでDB作成
SupabaseのSQLエディタを開き、DDLを適用します。RLSを有効にし、生成されたポリシーを追加します。シードデータを使ってテストプロジェクトにデータを投入し、制約を検証します。
20 minクエリの検証
Supabaseで上位5つのクエリを実行します。インデックスが使用されていることとレイテンシが許容範囲内であることを確認します。クエリプランがフルスキャンを示す場合はインデックス定義を調整します。
15 min
