データベースの基本15~リレーションシップの設定③

Pocket

③参照整合性・フィールドの連鎖更新あり
参照整合性にチェックを入れると、フィールドの連鎖更新とレコードの連鎖削除にもチェックを入れられるようになります。連鎖更新にもチェックを入れると例えばある得意先の得意先CDを変更した場合、すでに登録されている他のテーブルの得意先CDも同時に更新されるのが、連鎖更新です。


鈴木会計の得意先CDをZ0002からZ999に変更します。そうすると納品書テーブルの得意先CDも自動で更新されます。

これが連鎖更新です。得意先テーブルに登録された得意先は、取引がなくなったからと言ってデータを消すことはできません。そんなときは、得意先CDを変更して得意先テーブルを開いたときに、レコードの表示順として下に表示されるなど、レコードの順番を変えるときとか、仮に得意先CDを作り、あとから変更する等そういった事情もあるのでそんなときは連鎖削除を設定しておくと便利です。もちろん後から連鎖更新の機能を追加することもできます。
もう少し具体的に言うと、得意先CD・仕入先CD・社員CDなどある特定の名前を指定するCDは変更する可能性があるので最初から連鎖更新を設定しておいたほうがいいと思います。

④参照整合性・レコードの連鎖削除あり
レコードの連鎖削除の設定をすると、他のテーブルのその削除したレコードが使われているレコードもまとめて削除されます。連鎖更新のときの得意先CDを例にとると、得意先テーブルのある得意先のレコードを削除すると、その得意先の納品書テーブル・納品明細テーブルのデータが根こそぎ削除されます。


得意先テーブルのZ999の「鈴木会計」のレコードを削除すると、上記のような警告が出てきます。これはZ999が他のテーブルのレコードに使われいるので、このレコードを消すと他のテーブルのデータも削除されるという警告です。これで「はい」を押すと納品書テーブルのデータも削除されます。

Accessで伝票を作り、納品書と納品明細のように親と子のような関係にある場合、納品書を削除したのに納品明細が残すと不要なデータがテーブルに残ることになるので、このような場合は通常連鎖削除の設定をします。逆に得意先テーブルのレコードを消すと、それに付随して過去の取引まで消えてしまうので、その場合は連鎖削除の設定はしません。

連鎖更新も連鎖削除の両方がある場合の設定もできます。その場合は得意先CDを変更するとそれに伴い納品書テーブルの得意先CDが更新され、得意先テーブルのレコードを消すとそれに付随して納品書テーブルのその得意先CDのレコードも削除されます。

この点は必要に応じて設定してもらえばいいのですが、一般的には得意先・仕入先・社員テーブル等取引の情報ではなく、個別の情報を規定したテーブルとリレーションシップを設定するときは、連鎖更新のみ。メインフォームとサブフォームの関係にあるテーブル同士を結合する場合は連鎖更新と連鎖削除の両方を設定します。

=============================================
確定申告が無事終わりました。そしてそのまま延長戦に突入し、1月決算に取り組んでおります。
なかなか息つく暇がない今日この頃です。
もうこれ以上新規の個人の確定申告は受けないことを今年誓いました。

本日も最後までお読みいただきありがとうございます。