スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

13.19.1 参照制約とは

データベース中の表は,それぞれ独立しているのではなく,お互いに関連を持っている場合があります。一方の表に関連するデータがないと,ほかの表でそのデータの意味がないことがあります。表間のデータの参照整合性を保つため,表定義時に特定の列(外部キーといいます)に定義する制約が参照制約です。参照制約及び外部キーを定義した表を参照表,外部キーによって参照表から参照される表を被参照表といいます。被参照表には外部キーによって参照される主キーを定義しておく必要があります。

なお,SQLやユティリティの実行などで被参照表と参照表間の参照整合性が保証できなくなる場合があります。この場合,参照表は検査保留状態になります。検査保留状態については「13.19.3 検査保留状態」を,整合性を保証できなくなる操作については「13.19.4 データ操作と整合性」を参照してください。

被参照表と参照表の例を次の図に示します。この例では,商品表が参照表,製造元表が被参照表となります。参照表の外部キーから主キーを参照し,製造元名が分かります。

図13-31 被参照表と参照表の例

[図データ]

参照制約を定義する場合,外部キーにインデクスを定義すると処理性能が向上します。ただし,被参照表の主キーを更新しない場合は,外部キー値の更新によるインデクス更新のためのオーバヘッドがあるので,更新時の性能が悪くなることがあります。

参照制約の効果
参照制約を定義すると,表間のデータの整合性チェック,及びデータ操作を自動化できるのでUAPを作成するときの負荷を軽減できます。ただし,被参照表や参照表を更新する場合,データの整合性をチェックするため,チェックに掛かる処理時間が増加しますので,注意してください。次のような場合に,チェックに掛かる処理時間が増加します。
  • 更新する列が被参照表の主キーの場合
    被参照表の主キーを参照する参照表の外部キーの数に比例して遅くなります。
  • 更新する列が参照表の外部キーの場合
    更新する列を構成列とする外部キーの数に比例して遅くなります。