スキル database-design
📦

database-design

安全

データベース設計とスキーマ決定をマスターする

開発者はデータベースの選択とスキーマ設計の落とし穴に苦しみます。このスキルは、文脈に基づいてデータベースを選択する方法、スキーマを設計する方法、クエリを最適化するたの判断フレームワークを教えます。

対応: Claude Codex Code(CC)
🥉 76 ブロンズ
1

スキルZIPをダウンロード

2

Claudeでアップロード

設定 → 機能 → スキル → スキルをアップロードへ移動

3

オンにして利用開始

テストする

「database-design」を使用しています。 10,000人の同時ユーザー、グローバル分散、サブ50ミリ秒レイテンシ要件を持つリアルタイムチャットアプリケーションのデータベースを選択する必要があります。

期待される結果:

厳格なレイテンシ要件を持つグローバルリアルタイムチャットには、Turso(エッジSQLite)をプレゼンスとメッセージメタデータ用に、主となるPostgreSQLインスタンスを耐久性のあるストレージ用に組み合わせることを検討してください。Tursoはレイテンシを削減するエッジデプロイを提供し、PostgreSQLは複雑なクエリとトランザクションを処理します。代替案:グローバルブランanking対応のMySQL互換PlanetScale。

「database-design」を使用しています。 ユーザープリファレンステーブルを正規化するべきですか、それともJSONBとして保存すべきですか?

期待される結果:

JSONBとして保存する場合:個別のプリファレンスが頻繁にクエリされない場合、スキーマが頻繁に进化する場合、完全なセットを常に取得する場合。正規化する場合:WHERE句で特定のプリファレンスをクエリする必要がある場合、異なるプリファレンスの更新頻度が異なる場合、外部キー制約が必要な場合。ハイブリッドアプローチ:頻繁にフィルタリングされる設定用の正規化テーブルと、柔軟なプリファレンス用のJSONB。

セキュリティ監査

安全
v1 • 2/24/2026

All static analyzer findings are false positives. The 'external_commands' detections are markdown code fence blocks (```) used for educational diagrams, not executable shell commands. The 'weak cryptographic algorithm' flags reference UUID/ULID discussions in documentation context. The schema_validator.py is a legitimate local Python script for Prisma schema validation. This is a documentation-only skill teaching database design principles.

8
スキャンされたファイル
489
解析された行数
0
検出結果
1
総監査数
セキュリティ問題は見つかりませんでした
監査者: claude

品質スコア

45
アーキテクチャ
100
保守性
87
コンテンツ
50
コミュニティ
100
セキュリティ
91
仕様準拠

作れるもの

新規プロジェクトのデータベースセットアップ

MVPを構築するスタートアップ創業者がPostgreSQL、SQLite、サーバーレスタイプの選択肢から選ぶためのガイダンスを必要としています。このスキルは、スケーラビリティの必要性、予算、デプロイメントの好みに基づいて判断ツリーを提供します。

スキーマ設計レビュー

新機能を設計するバックエンドエンジニアがユーザーリレーションシップ、タイムスタンプ、外部キー制約のモデル化を手伝ってほしいと考えています。このスキルは正規化のトレードオフとリレーションパターンについてレビューします。

クエリパフォーマンスのトラブルシューティング

低速なクエリに苦しむ開発者がインデックス戦略とN+1問題について理解する必要があります。このスキルはEXPLAIN ANALYZEの解釈と複合インデックス設計について説明します。

これらのプロンプトを試す

初級:データベース選択
{project_type}アプリケーションを構築しており、ユーザーは{expected_users}人、予算は{budget_level}、{specific_requirements}が必要です。データベース選択ガイドに基づいて、最適なデータベースオプションを推奨し、トレードオフを説明してください。
中級:スキーマ設計レビュー
{table_name}テーブルのスキーマ設計をレビューしてください。{data_fields}を保存する必要があり、{related_tables}との関係があります。私のアプローチが正規化の原則に従っているか、適切なインデックスがあるか、正しい関係タイプを使用しているかをチェックしてください。
上級:クエリ最適化
{query_description}のクエリが{execution_time}かかっています。EXPLAIN ANALYZEの出力は次の通りです:{explain_output}。ボトルネックを特定し、具体的なインデックスやクエリ再構築戦略を推奨してください。
エキスパート:マイグレーション戦略

ベストプラクティス

  • 常にTIMESTAMPTZを使用してタイムゾーン対応の作成日時と更新タイムスタンプを定義する
  • 分散システムでは列挙攻撃を避け、オフラインID生成を可能にするためにUUIDまたはULID主キーを使用する
  • 最も一般的なクエリパターンに一致する複合インデックスを作成し、等価列を範囲列の前に配置する

回避

  • シンプルなアプリケーションでPostgreSQLをデフォルトで使用し、不必要なインフラストラクチャ複雑性を追加する
  • 書き込みパフォーマンスへの影響と低カーディナリティの非効率性を考慮せずにすべての列にインデックスを作成する
  • 必要な列を明示的に選択する代わりに本番環境クエリでSELECT *を使用する

よくある質問

SQLiteとPostgreSQLのどちらを選ぶべきですか?
SQLiteを選択する場合:組み込みアプリケーション、ローカル開発、1日100Kリクエスト未満の読み取り集中ワークロード、単一ライターシナリオ、またはシンプルさが機能よりも重要な場合。PostgreSQLを選択する場合:同時書き込み、高度なSQL機能(CTE、ウィンドウ関数)、行レベルセキュリティ、複雑なトランザクション、または Provenanceと監査証跡が必要な場合。
N+1クエリ問題とは何ですか?またどのように修正しますか?
N+1は、親レコードを取得し(1クエリ)、次にループして関連レコードを取得(Nクエリ)する際に発生します。修正方法:JOINで1つのクエリでデータを結合、ORMでavore loading、GraphQLでDataLoader用于 バッチ処理、またはサブクエリで一度にすべての関連レコードを取得。修正が機能することを常にEXPLAIN ANALYZEで確認してください。
Drizzle、Prisma、Kyselyの間でどのように選択しますか?
Drizzle:軽量、SQLライク構文、サーバーレスとエッジに最適。Prisma:マイグレーション、タイプ生成、スタジオUIを備えたフル機能のORM。Kysely:厳格なタイプセーフティを持つTypeScriptファーストのクエリビルダー。ミニマリズムにはDrizzle、完全なORMニーズにはPrisma、ORM抽象化なしのタイプセーフなクエリビルダーにはKyselyを選択してください。
最適なパフォーマンスのためにどの列にインデックスを作成する必要がありますか?
インデックスを作成する列:フィルタリング用のWHERE句、リレーションシップ用のJOIN条件、ソート用のORDER BY、リレーションシップクエリ用の外部キー列。インデックスを避ける:低カーディナリティ列(ブール値、性別)、クエリでほとんど使用されない列、またはインデックスメンテナンスが挿入を遅らせる書き込みトラフィックが重いテーブル。
ゼロダウンタイムで大きなテーブルを安全にマイグレーションするにはどのようにしますか?
expand-and-contractパターンを使用してください:フェーズ1(expand)で古いものを維持しながら新しい列/テーブルを追加。フェーズ2でデータをバックフィルし、ダブルライト。フェーズ3で読み取りを徐々に移行。フェーズ4(contract)で検証後古い列/テーブルを削除。バックフィルにはロック競合を避けるためバッチ処理を使用し、段階的なロールアウトにはフィーチャーフラグを使用してください。
Neon、Supabase、セルフホストPostgreSQLの違いは何ですか?
Neon:ブランチング(gitのような)、自動スケーリング、従量課金を備えたサーバーレスPostgreSQL。Supabase:リアルタイムサブスクリプション、認証、ストレージ、エッジ関数をバックエンドプラットフォームとして提供するPostgreSQL。セルフホスト:設定、拡張機能、コストの完全な制御,但し運用専門知識が必要。サーバーレスにはNeon、フルスタック機能にはSupabase、制御にはセルフホストを選択してください。

開発者の詳細