しがないOLのはじめての「Microsoft Access」 ~リレーションシップ編~

しがないOLのはじめての「Microsoft Access」 ~リレーションシップ編~

Clock Icon2012.11.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。クニ吉です! 前回はAccessのテーブル作成編ということで、テーブルの作成方法と各種設定について書かせてもらいました。 今回はその作成したテーブル同士を繋げる「リレーション」について書きたいと思います。

リレーションシップとは?

たとえば、下記のような取引先の一覧があるとします。

access01

これを仮に企業情報、部署情報、担当者情報の3つのテーブルに分けると下図のようになります。 上図一番上の「株式会社AAA」の「AAA太朗」さんを見てみましょう。

access02

AAA太朗さんの所属する「株式会社AAA」という企業の中には「ソリューション営業部」をはじめとした4部署が入っており、 「ソリューション営業部」 にはAAA太朗さんをはじめとする4人が所属している、という図になります。 「Accessってなに?」編で少し触れていますが、Accessは任意のテーマ毎に分類を行い、関係のあるカテゴリー同士を紐づけて管理していきます。この「紐づけ(関連付け)」というのがリレーションシップと呼ばれるものです。 つまり、「株式会社AAAには1.ソリューション営業~4.経営企画部の部署がある」ということを紐づけている機能で、 この設定をしなければ部署情報テーブルは独立した存在となり、どこの会社に存在する部署かもわからず何の意味を持たないデータとなります。

リレーションさせるには?

では、実際にどうやってリレーションを行えばいいのでしょうか? そこで重要になってくるのが「主キー」というものです。

主キーとは

主キーとはPrimaryKeyとも呼ばれ、データベースの中からレコードを一意に識別するためのものです。 この主キーは重複することはなく、Null値も許されません。 主キーは登録したデータの住所のようなものだと思ってもらえばいいと思います。 上図でいうと、会社IDや部署ID、担当者IDが各テーブルの主キーとなります。 何故IDを主キーにするかというと、部署名や担当者名など他のフィールドは値が重複する可能性が高く、 重複を許さない主キーの設定には向かないのです。 主キーに設定するID自体も、自動的に番号を振り値が重複することのないオートナンバー型を選択することが一般的です。 場合によっては任意の文字列を主キーにすることがありますが、そのテーブルの特性を十分に把握して行わなければ後から行き詰まることになりますので、注意が必要です。

主キーの設定

では主キーの設定をしてみましょう。 テーブルの新規作成時には既に「ID」というフィールドが存在し、IDが主キー設定されていますので、 基本的にはこの設定をすることは少ないと思います。 主キーに設定されているフィールドの横には鍵マークが表示されます。

access03

主キーを他の項目に変更する場合は、 主キーに設定したいフィールドをアクティブにし、デザインタブ内の「主キー」をクリックします。 すると、主キー設定したいフィールドに鍵マークが移動します。

テーブルを紐づける

テーブル同士の関係

では、主キー設定をしたのでテーブル同士を紐づけたいと思いますが、テーブル同士には親と子の関係があることを説明します。 データを登録する時、企業情報テーブルと部署情報テーブルでは企業情報は1つ(株式会社AAA)に対し部署情報は複数存在し、 1対多の関係になりますが、この「1」となるテーブルが親テーブルとなり、これを「主テーブル」と呼びます。 それに対し、「多」は主テーブルのデータを参照している子テーブルとなり、これを「関連テーブル」と呼びます。 リレーションは1対多以外にも1対1や多対多なども存在しますが、とりあえず基本から。

この主テーブルと関連テーブルを紐づけるためには、関連テーブル側に主テーブルの主キー(ID)を保管するためのフィールドを 用意しなければなりません。この関連テーブルに作るフィールドのことを「外部キー」と呼びます。

つまりこんな感じ。 access04

リレーションの設定

では、実際にリレーションの設定を行いましょう。 データべースタブ内にある「リレーションシップ」をクリックするとテーブル表示ウィンドウが表示されます。 ここでリレーションするテーブルを選択します。 リレーションシップ画面にテーブルを追加出来たら、テーブル表示ウィンドウを閉じましょう。 ウィンドウを閉じた後、更に画面にテーブルを追加したい場合は、デザインタブ内にある「テーブルの表示」をクリックすれば、 再びテーブル表示ウィンドウが開きます。 access05

リレーションシップの画面に企業テーブル(主テーブル)と部署テーブル(関連テーブル)のふたつのテーブルがあります。 主テーブルの主キーにあたる企業ID(親)をクリックし、関連テーブルの企業IDを格納するフィールド(子/外部キー)まで ドラッグ&ドロップすると、リレーションシップウィンドウが表示されます。

左側の「テーブル/クエリ」が主テーブル、右側の「リレーション テーブル/クエリ」が関連テーブルになります。 「テーブル/クエリ」の下にテーブル名が表示されていますので、リレーションテーブルに間違いがないかを確認しましょう。

リレーションシップのオプション

リレーションシップウィンドウ下部にある「参照整合性」、「フィールドの連結更新」、「レコードの連結削除」について説明します。

  • 参照整合性 主テーブルに存在しない値を関連テーブルのフィールドに格納できないようにします。 つまり、企業テーブルに存在しないID(仮に222)を部署テーブルの企業ID(外部キー)に保存できないようにします。 企業テーブルでID222の企業が登録されて初めて部署テーブルで保存することが出来るようにします。
  • フィールドの連結更新 主テーブルの値が更新された時に、関連テーブルの値が自動的に変更されるようにします。 例えば、「AAA株式会社」が「ABC株式会社」に社名変更し、企業テーブルの会社名の登録を変更した場合、 部署テーブルや担当者テーブルなど、関連づけたすべての値を変更します。 ※参照整合性にチェックを入れると選択できるようになります。
  • レコードの連結削除 主テーブルのレコードが削除された時に関連テーブルも削除されます。 ※参照整合性にチェックを入れると選択できるようになります。

設定を終えたら「作成」ボタンを押します。 リレーションシップ画面を見ると、ふたつのテーブルが紐づけられたことがわかります。

以上でリレーション設定は完了です。 次回は、入力用フォームについて書きます。

ではではー。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.