foreign-key-constraints

daishiman's avatarfrom daishiman

外部キー制約と参照整合性をC.J. Dateの理論に基づいて設計するスキル。CASCADE動作の戦略的選択、循環参照の検出・解消、ソフトデリート整合性を提供。SQLite/Turso + Drizzle ORM環境に最適化。Anchors:• An Introduction to Database Systems(C.J. Date) / 適用: FK設計 / 目的: 理論的に正しい制約設計• The Pragmatic Programmer(Hunt, Thomas) / 適用: 実装品質 / 目的: 保守性の高い設計Trigger:Use when designing foreign key relationships, selecting CASCADE behavior, detecting circular references, integrating soft delete patterns, or reviewing database schema integrity.

⭐3stars🔀0forks📁View on GitHub🕐Updated Jan 10, 2026

When & Why to Use This Skill

This Claude skill provides expert guidance for designing foreign key constraints and referential integrity based on C.J. Date's relational database theories. Optimized for SQLite/Turso and Drizzle ORM environments, it helps developers implement robust data structures through strategic CASCADE selection, circular reference detection, and seamless soft-delete integration.

Use Cases

  • Designing theoretically sound foreign key relationships for complex relational database schemas.
  • Selecting and implementing appropriate CASCADE behaviors (SET NULL, CASCADE, RESTRICT) to align with business logic.
  • Detecting and resolving circular dependencies in database schemas to prevent migration failures and integrity issues.
  • Integrating soft-delete patterns with physical foreign key constraints to ensure data consistency and prevent orphaned records.
  • Reviewing Drizzle ORM schema definitions to ensure high maintainability and adherence to relational best practices.
nameforeign-key-constraints
description|
• An Introduction to Database Systems(C.J. Date) / 適用FK設計 / 目的: 理論的に正しい制約設計
• The Pragmatic Programmer(Hunt, Thomas) / 適用実装品質 / 目的: 保守性の高い設計

外部キー制約設計

概要

外部キー制約と参照整合性の設計を、C.J. Dateの理論的基礎とThe Pragmatic Programmerの実用的指針に基づいて支援。CASCADE動作の戦略的選択、循環参照の検出と解消、ソフトデリートとの整合性確保を実現。

ワークフロー

Phase 1: 設計レビュー

目的: FK制約設計の妥当性を確認し、問題を早期発見

アクション:

  1. データベーススキーマ定義を確認
  2. テーブル関係性を分析
  3. FK制約の妥当性を評価

Task: agents/design-review.md を参照

Phase 2: CASCADE動作の選択

目的: ビジネスルールに合致したCASCADE動作を選択

アクション:

  1. references/cascade-patterns.md でパターンを確認
  2. 親子テーブルの関係性を分析
  3. 適切なCASCADE設定を決定

Task: agents/cascade-selection.md を参照

Phase 3: 循環参照の検出

目的: 循環参照を検出し、解消策を提案

アクション:

  1. FK制約の依存関係グラフを構築
  2. 循環参照を検出
  3. 解消策を優先順位付きで提案

Task: agents/circular-detection.md を参照

Phase 4: ソフトデリート統合

目的: ソフトデリートとFK制約の整合性確保

アクション:

  1. ソフトデリート対象テーブルを特定
  2. FK制約との整合性を設計
  3. クエリ実装パターンを適用

Task: agents/soft-delete-integration.md を参照

Task仕様ナビ

Task 用途 入力 出力
agents/design-review.md 設計レビュー スキーマ定義 妥当性評価レポート
agents/cascade-selection.md CASCADE選択 関係性・要件 推奨CASCADE設定
agents/circular-detection.md 循環参照検出 FK依存グラフ 循環リスト・解消策
agents/soft-delete-integration.md ソフトデリート統合 削除ポリシー 実装パターン

ベストプラクティス

すべきこと

  • FK制約追加前に設計レビューを実施
  • CASCADE動作はパターンから選択
  • 循環参照を定期的に検証
  • ソフトデリート導入時はPhase 4を必ず実行

避けるべきこと

  • 理論的根拠なしにCASCADEを多用する
  • 循環参照を確認せずにFK制約を追加
  • ソフトデリートとハードデリートの整合性確認を怠る
  • 深い階層のCASCADEをパフォーマンス考慮なしに設定

リソース参照

references/(詳細知識)

リソース パス 内容
CASCADEパターン references/cascade-patterns.md 各CASCADE動作のパターン・実装例

scripts/(検証・記録)

スクリプト 用途 使用例
check-fk-integrity.mjs 整合性検証 node scripts/check-fk-integrity.mjs --schema <dir>
log_usage.mjs 利用記録 node scripts/log_usage.mjs --result success

assets/(テンプレート)

テンプレート 用途
fk-design-checklist.md FK設計チェックリスト

変更履歴

Version Date Changes
2.1.0 2026-01-02 18-skills.md仕様に完全準拠。references/整理・簡素化
2.0.0 2025-12-31 Task-basedワークフロー追加
1.0.0 2025-12-24 初版作成