スキル postgresql
📦

postgresql

安全

PostgreSQLデータベーススキーマの設計

こちらからも入手できます: 2025Emma,2025Emma

データベーススキーマの設計エラーは、パフォーマンスの問題やデータ整合性の問題を引き起こします。このスキルは、データ型、インデックス、制約、スケーラビリティパターンに関するPostgreSQL特化のベストプラクティスを提供します。

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

スキルZIPをダウンロード

2

Claudeでアップロード

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

3

オンにして利用開始

テストする

「postgresql」を使用しています。 メール、名前、タイムスタンプを持つユーザーテーブルを設計

期待される結果:

  • CREATE TABLE users (
  • user_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  • email TEXT NOT NULL UNIQUE,
  • name TEXT NOT NULL,
  • created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  • updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
  • );
  • CREATE UNIQUE INDEX ON users (LOWER(email));

「postgresql」を使用しています。 主キーにUUID还是BIGINTを使用すべきですか?

期待される結果:

  • 次の場合にBIGINT GENERATED ALWAYS AS IDENTITYを使用します:
  • - シーケンシャルIDが許容される場合
  • - インデックスパフォーマンスが重要な場合
  • - 小さいインデックスサイズが重要な場合
  •  
  • 次の場合にUUIDを使用します:
  • - グローバルな一意性が必要な場合
  • - IDの不透明性がセキュリティ要件の場合
  • - 複数のソースからデータを���ージする場合

セキュリティ監査

安全
v1 • 2/24/2026

All 221 static analyzer findings were determined to be false positives. The skill consists entirely of markdown documentation (SKILL.md) with no executable code. Backtick characters are markdown formatting for code examples, not shell execution. References to security features like Row Level Security are PostgreSQL documentation, not Windows SAM access. The skill provides educational guidance for database schema design with no security risks.

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

品質スコア

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

作れるもの

新規アプリケーションスキーマ設計

適切なデータ型、主キー、外部キーリレーションシップ、一般的なクエリパターン用のインデックスを使用して、新しいWebアプリケーションの完全なデータベーススキーマを設計します。

スキーマレビューと最適化

パフォーマンスの問題、不足しているインデックス、不適切なデータ型、データ整合性の問題を引き起こす可能性のある制約の欠落について、既存のテーブル設計をレビューします。

移行計画

トランザクションDDL、並列インデックス作成、ダウンタイムなしで大規模テーブルに列を追加する戦略を使用して、安全なスキーマ進化を計画します。

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

基本テーブル設計
メール、名前、登録日、オプションのプロファイル設定フィールドを持つユーザープロファイル保存用のPostgreSQLテーブルを設計します。適切なデータ型と制約を使用してください。
インデックス戦略
id、user_id、status、created_at列を持つクエリテーブルがあります。一般的なクエリはuser_idとstatusでフィルタリングし、created_atの降順でソートします。イ���デックス戦略を推奨してください。
JSONB設計決定
商品属性をJSONB列に保存するか、別の列を作成するべきですか?属性は商品カテゴリによって異なり、ユーザーは特定の属性で頻繁に検索します。
大規模テーブルパーティション分割
月間1000���行増加しているイベントテーブルがあります。クエリは通常event_dateとdevice_idでフィルタリングします。パー���ィション戦略を推奨し、トレードオフを説明してください。

ベストプラクティス

  • タイムゾーンの混乱を避けるため、すべてのイベントタイムスタンプにTIMESTAMPの代わりにTIMESTAMPTZを使用する
  • PostgreSQLは外部キー列のインデックスを自動作成しないため、外部キー列に明示的なインデックスを追加する
  • まず3NFに正規化し、実証された高ROIの読み取りパフォーマンス向上のためのみ非正規化する

回避

  • CHECK制約付きTEXTの代わりに長さ制限付きVARCHARを使用する
  • 実際のクエリパターンを分析せずにすべての列にインデックスを作成する
  • 自動増分列にGENERATED ALWAYS AS IDENTITYの代わりにSERIALを使用する

よくある質問

文字列カラムにTEXT还是VARCHARを使用すべきですか?
ほとんどの場合TEXTを使用してください。PostgreSQLはTEXTとVARCHARを同一に保存します。長さの検証が必要な場合は、VARCHAR(n)の代わりにCHECK制約を追加してください。
外部キーカラムのインデックスが必要ですか?
はい。PostgreSQLは外部キーカラムのインデックスを自動作成しません。結合パフォーマンスと親行削除時のロック問題防止のため、外部キーカラムに明示的なインデックスを追加してください。
いつJSONBを通常のカラムの代わりに使用すべきですか?
オプション、可変、または半構造化属性にはJSONBを使用してください。コアリレーショナルデータは通常のカラムに保持してください。包含クエリのためにJSONBカラムには常にGINインデックスを追加してください。
TIMESTAMPとTIMESTAMPTZの違いは何ですか?
TIMESTAMPTZはタイムゾーン認識でタイムスタンプを保存し、内部でUTCに変換します。TIMESTAMPはタイムゾーンコンテキストなしでリテラル値を保存します。タイムゾーンバグを避けるため、常にTIMESTAMPTZを使用してください。
テーブルをパーティション分割すべきですか?
クエリが日付などのパーティションキーで一貫してフィルタリングする、1億行を超えるテーブルについてはパーティション分割を検討してください。パーティション分割は複雑さを追加するため、明確なメリットがある場合にのみ使用してください。
大規模テーブルにNOT NULL列を安全に追加するにはどうすればよいですか?
まずNULLとして列を追加し、データをバックフィルしてから、NOT NULLに変更します。now()のような揮発性デフォルトでNOT NULLを追加すると、完全なテーブル書き直しが発生します。非揮発性デフォルトまたはマルチステップ移行を使用してください。

開発者の詳細

作成者

sickn33

ライセンス

MIT

参照

main

ファイル構成

📄 SKILL.md