仕様と根拠
参照の向きと循環
列の REFERENCES と表の FOREIGN KEY ... REFERENCES の両方から、子の表から親の表への向きの辺を作ります。表を頂点にした有向グラフで、2 つ以上の表が輪になっているか、自分自身を参照していれば循環の候補です(CREATE TABLE 文書)。
緩和の見込み
参照列が NULL を許可していれば、先に NULL で行を入れられます。DEFERRABLE な外部キーは検査をトランザクションの終わりまで遅らせられます(CREATE TABLE 文書)。そうした辺がある循環は緩和できる可能性ありと表示します。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| PostgreSQL 18 ドキュメント CREATE TABLE | 2026年10月28日 | REFERENCES / FOREIGN KEY の構文・DEFERRABLE・NULL / NOT NULL |
| PostgreSQL 18 ドキュメント 4.1 字句構造 | 2026年10月28日 | 4.1.1(識別子と引用符)・4.1.2.1(文字列)・4.1.5(コメント) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- 完全な SQL の構文解析はしません。貼られていない表の参照は先をたどれず、循環を見逃すことがあります(その旨を情報で示します)。
- 「候補」の検出です。業務の流れ(どの表に先にデータが入るか)までは判定しません。
- 自己参照(階層構造の親子)は多くの設計で普通の形のため、複数の表にまたがる循環とは区別して情報で示します。
- CREATE TABLE ... AS などの列定義のない形は読みません。ALTER TABLE は ADD [CONSTRAINT] FOREIGN KEY だけを読みます。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。