• 2015年8月5日

Access リレーションシップ 講座 Vol.4

Access リレーションシップ 講座 Vol.4

Access リレーションシップ 講座 Vol.4 424 283 パソコン生活サポート Pasonal

さて、今回はリレーションシップの設定です。

データベースのフィールドとフィールドをリレーションシップで繋げます。この講座ではステップbyステップで簡単に進めることができます。

是非、ご参考に!

関連講座

  1. Access データベースの正規化 講座 Vol.1
  2. Access データ型の決定とフィールドの構築 講座 Vol.2
  3. Access ルックアップウィザード 講座 Vol.3
  4. Access リレーションシップ 講座 Vol.4 ← ココ
  5. Access クエリ作成 講座 Vol.5
  6. Access 関数の使い方 講座 Vol.6

 

1.Access リレーションシップ の設定方法

リレーションシップ

 

リレーションシップは以下のように設定します。

上部メニューから<リレーションシップ>を選択します。

 

 

テーブルを表示させる

 

リレーションでつなげたいテーブルを表示させます。リレーションシップを初めて作成すると、テーブル一覧が表示されるので、そちらから任意のものを選択してもOKです。

下記のように、左側のテーブル一覧から、ドラック&ドロップでテーブルを追加することも可能です。

 

 

同じフィールドをドラック&ドロップ

 

共通するフィールドを、ドラック&ドロップでつなげます。

M_商品区分の<商品区分コード>をつかみ、M_商品の<商品区分コード>の上でドロップしてください。

 

 

参照整合性にチェック

 

参照整合性を適用画面では、以下の項目全てにチェック入れます。これは、参照整合性にチェック入れることで、矛盾するデータの入力を防ぐことができます。例えば、M_商品区分のテーブルに存在しない項目は、M_商品で入力することはできません。

<連鎖更新><連鎖削除>も同様に、M商品区分の項目が消されると、同様に関連する項目が削除されます。データベースは矛盾するデータを極力省くことで、データの整合性を保つ必要があるわけです。

また、リレーションシップの種類を確認してください。

原則<1対多>または<多対1>の関係になっている必要があります。もちろん例外もありますが、この原則は極力成立するようにデータベースを構築しましょう。もし、<多対多>や<1対1>いれば、それはデータベースの構築がおかしいということになります。

再度、データベースの構築から見直してみましょう!

 

 

リレーションシップの完成

 

リレーションシップが完成すれば、上記のような感じになります。ここでは<1側>となっているほうが「親」、<多側>になっているほうが「子」の関係になります。

データを削除する場合、「子」の側から先にデータを削除する必要があります。

 

2.リレーションシップの削除

リレーションシップの削除

 

一度張ったリレーションシップを削除する場合は、細い線をクリックした後、右クリックから削除します。または、細い線をクリックした後、<Delキー>でも削除することができます。リレーションの線を複数削除する必要がある場合は、一つ一つ選択して削除していきましょう。

(まとめて削除する方法はありません)

 

3.サロゲートキー

サロゲートキー

 

まず、<M_仕入先>と<M_仕入先担当者>のテーブルの構成を説明します。<M_仕入先>には、仕入先の会社情報と担当者の情報があります。しかし、私は担当者の詳しい詳細は、別テーブルに分けることにしました。何故なら、<M_仕入先>に担当者の連絡先やメールアドレスの詳細情報があると、テーブルが見にくくなるからです。

ここで一度整理しておくと・・・・、

  1. 一つの仕入先の会社には、必ず一人の担当者がいる。(<M_仕入先>の担当者コードは一意となる)
  2. 担当者は変わる可能性がある。(<M_仕入先担当者>の担当者コードは重複する)
  3. データベースの理念に従い、過去の情報は出来る限り残しておく。(古い担当者情報はそのまま)

 

とはいえ、<M_仕入先担当者>テーブルには主キーが必要となる・・・。担当者コードは重複するため、主キーにはできない。複合キーも使用できそうな気がするが、気持ち的に使いたくない。そこで、管理用の主キー<サロゲートキー>を使用することにした。

当然このサロゲートキーは何ら使い道のない主キーとなる。

 

仕入先マスタ 仕入先担当者マスタ

 

最終的には、以下のようなテーブル構造になった。

 

4.リレーションシップで未定義になる場合

リレーションシップ 未定義

 

さて、担当者コードの問題も解決できたので、次はリレーションシップを設定するだけ。しかし、ここでさらに問題が発生!<リレーションシップが適用できない>のである・・・・。上記の画像で、リレーションシップの種類が<未定義>となっている。

これではリレーションシップが設定できない。

 

未定義の解決方法

これは、<M_仕入先>の担当者コードのインデックス設定が<未定義>になっているためである。

インデックスを<はい(重複なし)>に設定することで解決する。

これで無事にリレーションシップが設定できました!