仕様と根拠
参照整合性の規則
PostgreSQL の外部キー(文書 5.5.5)では、参照する側の NULL でない値は、参照される表に存在していなければなりません。これを満たさない行がこの道具の言う孤児レコードです。親にあるキーの集合を作り、子のキーがその集合に含まれるかを、文字列の完全一致で調べます。
NULL の扱い
外部キーでは、参照側の列が NULL の行は、既定では制約を満たさなくてよい(MATCH SIMPLE 相当)とされます。この道具も、子のキーが空欄の行は NULL とみなして検査から除きます。「NULL」という文字が入っている行も、設定で NULL とみなせます。NOT NULL にしたい列は、空欄の行を別に確かめてください。
親のキーの重複
外部キーが参照できるのは、主キーか一意制約の列などで、値が重複しない列です。親のキーが重複していると、参照先がどの行か決まらないため、警告します。また、子のキーが「01」で親が「1」のように、数値としては同じで文字列が違う場合は、その旨を孤児の警告に添えます。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| PostgreSQL 文書 5.5.5 Foreign Keys | 2026年10月29日 | 参照値が NULL でなければ親表に存在する必要がある。参照側の列のいずれかが NULL なら制約を満たさなくてよい(既定)。MATCH FULL は全列が NULL のときだけ免除。外部キーが参照する列は主キー・一意制約の列・部分的でない一意インデックスの列。MATCH SIMPLE という語はこのページになく、CREATE TABLE のリファレンスで既定の動作がそう呼ばれる。WebFetch で確認 |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- キーは 1 列だけを扱います。複数列の複合キーや、MATCH FULL(一部だけ NULL の行を違反とする)は検査できません。
- キーの比較は文字列の完全一致です。大文字小文字、前後の空白以外の表記ゆれ、全角と半角の違いは別の値として扱います。
- 大きな CSV は端末の性能により処理に時間がかかることがあります。表には 2,000 行まで載せます。
ご利用にあたって
- 孤児レコードの有無は、貼り付けた 2 つの CSV の範囲だけの結果です。データベース全体の整合性は、取り込み後の外部キー制約で確かめてください。
- 顧客情報などを含む場合でも、ブラウザの外には送信されません。画面の共有やスクリーンショットにはご注意ください。