ACCESS リレーションシップの設定方法
ACCESSはEXCELとは異なり、複数のテーブル(表)をつなぎ合わせてデータを作っていくリレーショナルデータベースです。
このリレーションシップ設定がACCESSの基本であり、EXCELを使っている方には最もわかりにくい部分です。
この記事ではテーブルのリレーションシップ設定方法についてご説明します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。
目次
リレーションシップとは
そもそもリレーションシップとは何でしょうか。
ACCESSは、複数のテーブルを連結して一つの表を作っていくリレーションデータベースです。
複数のテーブルに分割することで、以下のメリットがあります。
①入力規則を徹底できる
②集計が容易
③更新がある場合に一ヶ所変更すれば全て変更できる
テーブルの設計方法について詳しく知りたい方は、はこちらの記事もご覧ください。
こうして複数に分割したテーブルは、バラバラでは意味をなしません。
テーブルをつなぎ合わせ、リレーションシップを設定してようやく使えるようになります。
リレーションシップとは、複数のテーブルを共通のキー値でつないで意味を持たせることです。
例えば、下記の例では売上マスターと商品マスターが共通の商品IDで連結されています。
こういったテーブル構成にすることで、売上マスターには商品IDだけを情報として保有することができ、商品名が変更になった際は商品マスターの商品名を1か所書き換えるだけで、売上マスターから参照される商品名を更新することが可能です。
リレーションシップの設定方法
では、実際にリレーションシップの設定方法を見ていきましょう。
今回はこちらの3つのテーブルを用意しました。
顧客テーブル
商品テーブル
売上テーブル
では、リレーションシップの設定をしていきましょう。
ACCESSを起動し、メニューの「データベースツール」から「リレーションシップ」を選択します。
リレーションシップのウィンドウが開きますので、「テーブルの表示」を選択します。
テーブルが表示されますので、今回リレーションシップを設定する、3つのテーブルを選択しましょう。
するとこんな画面になります。
現在は3つのテーブルが独立している状態ですので、ここからリレーションシップの設定をしていきましょう。
まずは、売上テーブルの「顧客ID」と顧客テーブルの「顧客ID」をつなぎます。
どちらかをもう一方にドラッグアンドドロップしましょう。
するとこんな画面が表示されます。
リレーションシップの設定ウィザードです。
チェックボックスが中央に3つありますが、3つともチェックしておけばよいでしょう。
ちなみに、それぞれは以下の意味です。
参照整合性 | 一対多のリレーションにおいて、両方のテーブルでデータの整合性が取れている。一側(今回でいう顧客テーブル)に無い値が多側(今回でいう売上テーブル)に存在しない。 |
フィールドの連鎖更新 | 一対多のリレーションにおいて、一側(今回でいう顧客テーブル)の主キーの値(顧客ID)が変更された場合に、多側(今回でいう売上テーブル)に設定されている同じフィールド(顧客ID)も連動して変更される。 |
レコードの連鎖削除 | 一対多のリレーションにおいて、一側(今回でいう顧客テーブル)のレコードが削除された場合に、多側(今回でいう売上テーブル)で該当の顧客IDが設定されているレコードも連動して削除される。 |
設定を行うと画面はこのような形になります。
売上テーブルと顧客テーブルの顧客IDが線でつながったのが分かると思います。
顧客テーブル側に「1」、売上テーブル側に「∞」と記載がありますが、これは顧客テーブルが一側、売上テーブルが多側であることを示します。
一側とはその値が一度しか現れないテーブルです。
顧客テーブルでは顧客IDが主キーですので、同じ顧客IDは2つは無い、ということです。
多側とは、その値が何度も現れる可能性があるテーブルです。
売上テーブルでは同じ顧客の売上が複数回記録されることがありますので、同じ顧客IDが複数存在します。
では、同じように商品テーブルもリレーションシップを設定してみましょう。
上記のようになりました。
これでリレーションシップ設定は完了です。
この設定により、売上テーブルの顧客IDと顧客テーブルの顧客ID、売上テーブルの商品IDと商品テーブルの商品IDがリレーション設定できました。
こうして複数のテーブルをリレーションさせて利用するのがACCESSの基本的な使い方です。
リレーションシップの種類
基本はここまでで完了していますが、もう少し追加でご説明しましょう。
リレーションシップには種類があります。
先ほどのリレーションシップの設定画面で「結合の種類」というボタンを押してください。
すると、下記の画面が表示されます。
ここでは、結合の種類を3パターンから選択することになります。
両方のテーブルの結合フィールドが同じ行だけを含める
これが標準です。
売上テーブル、顧客テーブルの両方に同じ値が存在するレコードのみを表示し、片方には存在するがもう一方には存在しない値が入っているレコードは表示されなくなります。
例えば、売上テーブルには顧客ID:10と入力されているのに顧客テーブルには顧客ID:10がいない場合は売上テーブルのレコードも表示されない、ということです。
この結合方法を内部結合と呼びます。
顧客テーブルの全レコードと売上テーブルの同じ結合フィールドのレコードだけを含める
こちらは、売上テーブル側に無い顧客IDでも、顧客テーブル側にある全てのレコードを表示する場合に利用します。
今回は顧客テーブルが一側テーブルなので、あまりこの結合方法を選択するシーンは多くありません。
この結合方法を外部結合と呼びます。
売上テーブルの全レコードと顧客テーブルの同じ結合フィールドのレコードだけを含める
こちらは逆に、顧客テーブル側に無い顧客IDでも、売上テーブル側のレコードは全て表示する、という方法です。
こちらも外部結合です。
売上テーブルには顧客ID:10と入力されているのに顧客テーブルには顧客ID:10がいない場合でも、この結合方法を選択すれば売り気テーブルのレコードを表示することが可能です。
そんなのはデータ入力上の誤りじゃないか?と思われるかもしれません。
実際にはこの結合方法を使うのは、多側のテーブルで入力値がNULL(空白)の場合が圧倒的に多いです。
今回は売上テーブルに入力されるのは顧客IDなので考えにくいのですが、売上テーブルの中には、レコードによって入力されたりされなかったりするフィールドもあると思います。
こうしたフィールドを他のテーブルとリレーション設定すると、内部結合の場合だと売上が表示されなくなってしまうのです。
そのため、外部結合を使ってい売上テーブルのレコードは全て表示させるのです。
実際に、外部結合に変更するとリレーションシップ画面でも、片側だけが矢印に変更されるのが確認できます。
以上、リレーションシップの設定方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。