この特集のトップページへ
Chapter 3:データストア層の構築

head2.gif 3.4.3 リレーションシップを定義する
 以上でテーブルの作成は終了したわけだが,あと2つ設定しておきたいことがある。それは,リレーションシップの定義と制約の設定である。ここではまず,リレーションシップから説明する。

 リレーションシップとは,データベーステーブルのつながりを示すものである。ここで構築しているテーブルでいえば,Fig.3-23に示すようなテーブル間のつながりがある。

 たとえば,伝票情報テーブルのCUSTOMERIDフィールドは,顧客情報テーブルのIDフィールドにつながっており,顧客情報テーブルに格納されているレコードのIDフィールドのいずれかの値をとる。もし顧客情報テーブルに伝票情報テーブルのCUSOMTERIDフィールドに格納された数値と一致するIDフィールドを持つレコードが存在しなければ,その伝票の受注先が誰なのかわからなくなってしまう(Fig.3-49)。

Fig.3-49 受注先が不明になる

fig3_49.gif

 Fig.3-49のような状況は,ある顧客に対して伝票が存在するにもかかわらず,その顧客を削除してしまった場合に起こり得る。このような状況を避けるには,顧客を削除するときに,その顧客にかかわる伝票の有無をチェックし,伝票が存在するならば削除させない,といったエラーチェック機構をビジネスロジックプログラム(データベースを操作するプログラム)に実装するのが一般的である。

 MSDEでは,このようなチェックをデータベースエンジン側に実装することができる。それが,MSDEのリレーションシップである。たとえば,AというテーブルのXというフィールドと,BというテーブルのYというフィールドがあり,両者のつながりをリレーションシップで定義したとしよう。この場合,そのつながりが切れてしまうようなデータベースの更新は効かなくなる(MSDE側で違反のエラーを返すようになる)。そのため,万一プログラム側にミスがあっても,データベーステーブルの整合性が保てなくなってしまうことはなくなる。

 Access 2000を使って,MSDEのリレーションシップを定義するには,[オブジェクト]のなかにある,[データベースダイアグラム]をクリックして選択し,右側に表示されている[デザイナを使用してデータベースダイアグラムを作成する]をダブルクリックするか,もしくは[新規作成]ボタンを押す(Fig.3-50)。

Fig.3-50 データベースダイアグラムの新規作成

fig3_50.gif

 すると,[データベースダイアグラム]ウィンドウが表示される。さらにメニューから[表示]−[テーブルの表示]を選択すると,Fig.3-51に示すように,登録されているテーブルの一覧が表示される。ここで,リレーションシップを定義するテーブルを[データベースダイアグラム]ウィンドウにドラッグ&ドロップする。

Fig.3-51 データベースダイアグラムウィンドウにテーブルをドラッグ&ドロップする

fig3_51.gif

 その後,Fig.3-51において,連結したいフィールド同士をマウスでドラッグして関連付ける。ここではまず,顧客情報テーブルのIDフィールドと伝票情報テーブルのCUSTOMERIDフィールドとを結び付けることにする(Fig.3-52)。

Fig.3-52 フィールドの関連付け

fig3_52.gif

 フィールドを関連付けると,Fig.3-53に示すように,どのような関連付けをするのかを問うダイアログボックスが表示される。

Fig.3-53 関連付けの種類

fig3_53.gif

 Fig.3-53の意味は,次のとおりである。


・主キーテーブル,外部キーテーブル
 主キーテーブルには,参照されるデータを備えたフィールドを設定する。そして,外部キーテーブルには,そのデータを参照するフィールドを設定する。この結果,外部キーテーブルに指定されたフィールドには,主キーテーブルに指定されたフィールドに含まれている値のいずれかしか指定できなくなる。
・作成時に既存データを確認する
 この項目にチェックを付けると,リレーションの作成時に,すでにテーブルに含まれているレコードと設定したいリレーションとのあいだに不整合がないかどうかを調べる。
・INSERTとUPDATEに対するリレーションを有効にする
 この項目にチェックを付けると,レコードの削除時だけでなく,レコードの挿入時や更新時にもリレーションに違反しないかどうかを調べるようになる。
・レプリケーションに対するリレーションを有効にする
 この項目にチェックを付けると,そのテーブルを外部にコピーしたとき,リレーション情報も同時にコピーされるようになる。

 通常は,主キーテーブルと外部キーテーブルの項目で関連付けるフィールドを選択したのち,すべてのチェックボックスにチェックを付け,最後に[OK]ボタンを押せばよい。

 同様の方法で,Fig.3-23に示したすべての関連付けに対してリレーションを設定する。

 最後に,[データベースダイアグラム]ウィンドウを閉じると,Fig.3-54に示す確認メッセージが表示される。ここで[はい]ボタンを押すと,Fig.3-55のようにデータベースダイアグラム名を尋ねてくるので,適当な名前(何でもかまわない)を入力する。すると,データベーステーブルに書き込むか否かを問われるので,[はい]ボタンを押す(Fig.3-56)。これで設定は完了である。

Fig.3-54 確認のメッセージ

fig3_54.gif

Fig.3-55 データベースダイアグラム名

fig3_55.gif

Fig.3-56 データベーステーブルに書き込むかどうかの確認

fig3_56.gif

prevpg.gif Chapter 3 20/22 nextpg.gif