コース: プログラミングの基礎:データベース

今すぐコースを受講しましょう

今すぐ登録して、23,200件以上登録されている、業界エキスパート指導のコースを受講しましょう。

参照制約を理解する

参照制約を理解する

このレッスンでは、 関連を持つテーブル間の 参照の整合性を実現するための 参照制約について説明します。 関連はテーブル間をリンクする 便利な方法です。 例えば、「顧客テーブル」と 「注文テーブル」は 「注文テーブル」の外部キー 「顧客ID」によって関連づけられています。 ですから、顧客はすべての注文を 参照することができます。 一方、「顧客テーブル」に 顧客ID「388」がない場合、 DBMSは「注文テーブル」に顧客ID「388」の 新しい行を追加することはできません。 もし追加を許可してしまうと、 2つのテーブルは矛盾してしまいます。 ですから、存在しない顧客に対しては、 注文の行を持たないように制御します。 このように外部キーと主キーの整合性を 保つための制約を 「参照制約」と呼びます。 「参照制約」によって、 注文がない顧客は許可されますが、 存在しない顧客の注文は許可されません。 「参照制約」は更新にも適用されます。 「注文テーブル」の顧客ID「369」を 「388」に変更することはできません。 なぜなら、「顧客テーブル」に ID「388」の顧客は存在しないからです。 さらに、「参照制約」は 削除時にも適用されます。 「注文テーブル」に存在する 顧客ID「367」の顧客を、 「顧客テーブル」から 削除することはできません。 もし削除しようとすると、 エラーが発生します。 ただし、「カスケード削除」 というオプションを 適用することもできます。 これは、親テーブルの行が 削除されたときに、 子テーブルの対応する行も 一緒に削除するものです。 ですから、「顧客テーブル」の 「367」の行を 削除するように指示した場合、 まず「注文テーブル」の顧客ID「367」の すべての行を削除してから、 「顧客テーブル」の 「367」の行を削除します。 削除のもうひとつのオプションに、 NULLをセットするというものがあります。 これは、親テーブルの行を削除すると、 その行と同じキーを持つ 子テーブルの外部キーに NULLをセットするというものです。 この場合、顧客ID「367」を削除すると DBMSは自動的にすべての注文を調べ、 「367」が見つかった場合は nullに設定します。 行は存在しますが、「顧客ID」の列は空で、 もはや存在しない顧客を指しています。…

目次