どの業務でも、 データが特定の制限または規則に従っていなければならない場合があります。 たとえば、従業員番号が固有でなければならない、などです。 DB2 は、このような規則を構成する手段として制約 を提供します。
DB2 は、以下のタイプの制約を提供します。
![]() |
データベース・マネージャーは、 挿入および更新操作中に制約を強制し、データ保全性を保証します。
基本キーは表の行を識別するために使用するため、 固有でなければならず、 追加または削除は少なくなければなりません。 1 つの表は複数の基本キーを持つことはできませんが、 複数の固有キーを持つことはできます。 基本キーはオプションであり、表の作成時または変更時に定義できます。 これらには、データのエクスポート時または再編成時にデータを配列するという益もあります。
次の表で、DEPTNO と EMPNO は、 それぞれ DEPARTMENT 表と EMPLOYEE 表の基本キーです。
DEPTNO (基本キー) | DEPTNAME | MGRNO |
---|---|---|
A00 | Spiffy Computer Service Division | 000010 |
B01 | Planning | 000020 |
C01 | Information Center | 000030 |
D11 | Manufacturing Systems | 000060 |
EMPNO (基本キー) | FIRSTNAME | LASTNAME | WORKDEPT (外部キー) | PHONENO |
---|---|---|---|---|
000010 | Christine | Haas | A00 | 3978 |
000030 | Sally | Kwan | C01 | 4738 |
000060 | Irving | Stern | D11 | 6423 |
000120 | Sean | O'Connell | A00 | 2167 |
000140 | Heather | Nicholls | C01 | 1793 |
000170 | Masatoshi | Yoshimura | D11 | 2890 |
たとえば、典型的な外部キー制約は、 従業員表の全従業員が、部署表に定義されているとおりに既存の部署のメンバーでなければならない、 というものです。
この関係を確立するには、 従業員表の部署番号を外部キーとして定義し、 部署表の部署番号を基本キーとして定義できます。
図 12. 外部キー制約および基本キー制約は関係を定義してデータを保護する
![]() |
たとえば従業員表では、「ジョブのタイプ (Type of Job)」列を、 「販売 (Sales)」、「管理 (Manager)」、または「事務 (Clerk)」となるように定義できます。 この制約を使用すると、 「ジョブのタイプ (Type of Job)」列にこれ以外の値のあるレコードはすべて無効になり、 拒否されることにより、表で許可されているデータのタイプに関する規則が強制されます。
トリガー をデータベースで使用することもできます。 トリガーは制約よりさらに複雑であり、潜在的により強力です。 トリガーは、指定した基礎表に対する INSERT、UPDATE、 DELETE 文節と一緒に実行される一連のアクション、 またはそれらの文節によってトリガー起動される一連のアクションを定義するものです。 トリガーを使えば、一般的な保全規則や業務規則をサポートできます。 たとえば、トリガーによって、注文に応じる前に顧客のクレジット限度を調べたり、 銀行業務アプリケーションで使用して、 アカウントからの引き出しが顧客の標準的な引き出しパターンに合わなかった場合にアラートを立ち上げたりできます。 このトリガーについての詳細は、アプリケーション開発の手引き を参照してください。