Skip to the content.

最終更新日:2026年7月20日

まず結論

FOREIGN KEYREFERENCES を使って指定するのは、参照制約です。

参照制約とは、

外部キーの値が、参照先の表に実際に存在する値だけになるようにする制約

です。

試験では、次の組合せをそのまま判断できるようにします。

FOREIGN KEY + REFERENCES
→ 参照制約

直感的な説明

社員表と部署表を例にします。

部署表
├─ 10:営業部
├─ 20:総務部
└─ 30:開発部

社員表
├─ 山田:部署番号10
├─ 佐藤:部署番号20
└─ 鈴木:部署番号99 ← 部署表に存在しない

部署番号99が部署表に存在しないのに、社員表へ登録できると、どの部署にも所属しない不整合なデータが生まれます。

参照制約は、このような登録を防ぎます。

参照先に存在しない値を、外部キーへ入れさせない。

これが中心となる役割です。

定義・仕組み

参照制約では、ある表の列を、別の表の主キーや一意な列に関連付けます。

主キーと外部キー

部署表では、部署番号が各部署を一意に識別する主キーです。

社員表では、部署番号が部署表を参照する外部キーになります。

部署表.部署番号
→ 主キー

社員表.部署番号
→ 外部キー

SQLでは、次のように指定します。

CREATE TABLE 部署 (
    部署番号 INTEGER PRIMARY KEY,
    部署名 VARCHAR(50)
);

CREATE TABLE 社員 (
    社員番号 INTEGER PRIMARY KEY,
    氏名 VARCHAR(50),
    部署番号 INTEGER,
    FOREIGN KEY (部署番号)
        REFERENCES 部署(部署番号)
);

この定義によって、社員表の部署番号には、部署表に存在する部署番号だけを登録できます。

FOREIGN KEYの役割

FOREIGN KEY は、参照する側の列を指定します。

FOREIGN KEY (部署番号)

REFERENCESの役割

REFERENCES は、参照先の表と列を指定します。

REFERENCES 部署(部署番号)

まとめると、次の関係です。

FOREIGN KEY
→ 参照する側

REFERENCES
→ 参照される側

科目Aでどう出る?

試験では、SQLのキーワードから制約名を答える問題や、制約の役割を問う問題が出ます。

判断表

キーワード・説明 対応する制約・用語
PRIMARY KEYFOREIGN KEY キー制約
CHECK 検査制約
FOREIGN KEYREFERENCES 参照制約
CREATE ASSERTION 表明
NOT NULL NULL禁止
UNIQUE 一意性制約

今回の判断軸は、次の一文です。

FOREIGN KEYとREFERENCESが並んだら参照制約。

キー制約との違い

キー制約は、主キーや外部キーなど、キーに関する制約の総称です。

参照制約は、その中でも特に、

外部キーと参照先の値の関係を守る制約

です。

したがって、FOREIGN KEY という言葉だけを見ればキー制約とも関係しますが、REFERENCES と組み合わせて問われた場合は、参照制約がより直接的な答えになります。

検査制約との違い

検査制約は、CHECK を使って値の条件を指定します。

CHECK (年齢 >= 0)
値の範囲や条件
→ 検査制約

別表の値との整合性
→ 参照制約

表明との違い

表明は、複数の表にまたがる整合性条件などを宣言する考え方です。

標準SQLでは CREATE ASSERTION を使って指定します。

試験では、次の対応で切り分けます。

CREATE ASSERTION
→ 表明

どんな場面で使う?

参照制約は、関連する表同士のデータを正しく保つために使います。

存在しない部署番号の登録を防ぐ

社員表に、部署表に存在しない部署番号を登録できないようにします。

存在しない商品番号の登録を防ぐ

注文明細に、商品表に存在しない商品番号を登録できないようにします。

親データの削除による不整合を防ぐ

部署表の部署を削除するとき、その部署を参照している社員が残っていると不整合になります。

このときの動作は、DBMSや制約の設定によって変えられます。

設定例 動作
RESTRICT / NO ACTION 参照中なら削除を拒否する
CASCADE 参照する側も連動して削除する
SET NULL 外部キーをNULLにする

FE試験では、まず次を押さえれば十分です。

親に存在しない値を子へ登録させず、親子関係の整合性を守る。

よくある誤解・混同

FOREIGN KEYは主キーを作る指定

違います。

PRIMARY KEY は主キー、FOREIGN KEY は別表を参照する外部キーを指定します。

REFERENCESは検索に使うSQL

違います。

REFERENCES は、外部キーがどの表・列を参照するかを示します。

参照制約は値の範囲を確認する

値の範囲や条件を確認するのは、主に検査制約です。

年齢が0以上
→ CHECK

部署番号が部署表に存在する
→ FOREIGN KEY + REFERENCES

外部キーの値は必ず主キーと同じ列名でなければならない

列名が同じである必要はありません。

参照関係とデータ型などが適切に定義されていれば、列名が異なっていても参照できます。

外部キーにはNULLを入れられない

外部キーにNULLを許可するかどうかは、列の定義によります。

NULLを禁止したい場合は、NOT NULLも指定します。

関連用語との切り分け

用語 役割
主キー 行を一意に識別する
外部キー 別表の行を参照する
参照制約 外部キーと参照先の整合性を守る
検査制約 値の条件や範囲を確認する
一意性制約 値の重複を禁止する
NOT NULL制約 NULLを禁止する

データベース全体の構造を定義するスキーマとの関係は、スキーマとは?ビュー・SQL・整合性制約との違いも参考になります。

まとめ(試験直前用)

  • FOREIGN KEYREFERENCES で指定するのは参照制約
  • 外部キーは別表の主キーなどを参照する
  • 参照先に存在しない値の登録を防ぐ
  • 親子関係の整合性を守る
  • CHECK は検査制約
  • CREATE ASSERTION は表明
  • PRIMARY KEY は主キーを指定する

覚える一文はこれです。

FOREIGN KEYで参照する列を決め、REFERENCESで参照先を指定する。

© 2024-2026 stemtazoo. All rights reserved.