ACCESSでテーブルを作成する方法
ACCESSはEXCELと異なり、複数のテーブルを繋ぎ合わせて利用するリレーショナルデータベースです。
ACCESSを活用する際の最初にして最大のハードルであるテーブル作成方法を、設計から解説します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。
目次
テーブル作成の手順
ACCESSを利用される方のほとんどは、EXCELの利用経験があるでしょうから、EXCELシートでまとめている情報を、どうやってACCESSのテーブルにしていくか、という流れで解説していきます。
テーブル作成は、以下の手順で進めます。
1.ACCESSデータベースに入力したいデータをEXCECLのシートにまとめる
2.EXCELシートから同じ値が複数回出現する項目を別のシートに移す
3.シート同士を一意の値でつなぐ
4.ACCESSでテーブルを作成する
1.~3.がテーブルの設計、4.がテーブルの実装です。
特にこの設計工程の作業をテーブルの正規化と言います。
正規化の概念が理解できると、急激にACCESSを使いこなせるようになります。
では、具体的にそれぞれの作業方法を見ていきましょう。
データをEXCECLのシートにまとめる
まずはデータベースに入れたいデータをEXCELシートで準備しましょう。
そもそもEXCELシートレベルでまとめられていない状態の情報をデータベースに取り込むことは難しいですので、ここができていない場合はまずはEXCELで情報を整理することから始めることをお勧めします。
今回はサンプルとして以下のデータを準備しました。
一般的な売上データです。
顧客名や商品名、売上金額などが記録されています。
少なくともこういった形で行、列を整理した表を作れるレベルまではデータを整理しましょう。
EXCELシートから同じ値が複数回出現する項目を別のシートに移す
さて、先ほどのデータには何度も同じ値が出現する列(フィールド)がありますよね。
顧客名や商品名です。
これらを別のシートに分離していきまます。
まずは顧客名だけを別シートにして、こんな感じにしてみましょう。
このシートを「顧客テーブル」と命名します。
顧客名だけを重複の無いようにまとめました。
そして、その顧客名に紐づく番号を「顧客ID」として付与しています。
この顧客IDを「主キー」と呼び、一つのテーブルの中で行(レコード)を特定するために使用する値になります。
例えば顧客IDが「1」なら顧客名は「あああ株式会社」ということが特定できます。
ですので、主キー(ここでいう顧客ID)は絶対に重複してはいけません。
この、重複がない値を「ユニークな値」、と呼びます。
シート同士を主キーでつなぐ
顧客名を別シート(顧客テーブル)に移した後、元のシートでも修正処理を行います。
これからは元のシートを売上テーブルと呼びます。
売上テーブルでは、顧客名を顧客テーブルの主キーである「顧客ID」に置き換えていきます。
するとこうなります。
顧客名が顧客IDに置き換わりました。
この顧客IDを元にして顧客テーブルを参照することで顧客名が分かるようになります。
では、同様に商品名も分離してみましょう。
こちらも顧客名とほぼ同じ手順ですが、一つだけ異なる部分があります。
それは単価です。
単価は商品に依存して変わりますので、商品名と一緒に別テーブルに移動させます。
このシートを商品テーブルと命名します。
そして、売上テーブルはこうなります。
商品名と単価がなくなり、商品IDに置き換わりました。
だいぶすっきりしてきました。
そして最後に「売上」です。
こちらのフィールドは単価×数量で計算されています。
ACCESSのテーブルにはこのように他のフィールドを元に計算した値は持たせないことが一般的です。
計算式で導く値は別途選択クエリを使って表示します。
そのため、売上を売上テーブルから削除します。
上記が売上テーブルの最終形です。
こういった手順で1枚のエクセルシートを、売上テーブル、顧客テーブル、商品テーブルに分解し、それぞれを主キーで接続するようにしました。
これでテーブルの設計が完了です。
ACCESSでテーブルを作成する
ここまででテーブルの設計ができれば、あとはACCESSでテーブルを作っていくだけです。
ここからは比較的簡単です。
商品テーブルを例にご説明しましょう。
ACCESSを起動し、「作成」→「テーブルデザイン」を選択します。
そこで新しいテーブルを以下のように設定します。
テーブル設定にはいくつかコツがあります。
ここで紹介しましょう。
テーブルの最初のフィールドは主キーにする
テーブルの最初のフィールドは必ず主キーにしましょう。
別に最初でなくてもよいのですが、自分なりのACCESSテーブル作成のルールを統一しておく方が、あとから見直した際に構成が分かりやすく、修正もしやすくなります。
主キーにすると左端にカギのマークがつきます。
主キーのフィールド名の命名規則を統一する
主キーのフィールド名は命名規則を統一しておくとよいでしょう。
私は、テーブル名+IDとしています。
顧客ID、商品ID、売上ID等。
こうしておくことでテーブルが増えた際にも主キーが分かりやすくなります。
主キーのデータ型はオートナンバー型
主キーのデータ型はオートナンバー型をお勧めします。
オートナンバー型は何も設定しなくても新しいレコードが増えた際に連番で付与されるので便利です。
その代わり、途中でレコードを削除するとその番号は抜けてしまうことになります。
よく、ACCESSの主キーの値をどうしても連番にしたい、間が抜けるのが気持ち悪いという方がいます。
VBAの機能を利用すれば、抜けた番号を他のレコードに振りなおすことなどは可能ですが、主キーはデータベース上非常に重要な値ですのでVBAなどで制御することはお勧めしません。
何らかのエラーが出た際に主キーが設定されないとデータベースそのものが正常に動作しなくなってしまうからです。
主キーはシステムで利用する値ですので連番にこだわらず、最も安定するACCESSの基本機能のオートナンバーで付与しましょう。
また、どうしても連番や会員番号に意味のある値を持たせたい場合、例えば会員番号が「記号+店舗番号+連番」等の場合は主キーとは別に会員番号フィールドを作り、そちらで制御することをお勧めします。
並び順フィールドを作成する
テーブルは用途によって大きく2種類に分かれます。
1.マスターテーブル
顧客テーブルや商品テーブルなどのように、他のテーブルから参照される先となるテーブル。
2.トランザクションテーブル
売上テーブルや仕入テーブルなどのように、毎日や毎月のデータが蓄積されていくテーブル。
入力の際に各種マスターテーブルを参照する。
このうち、マスターテーブルには並び順を入力するフィールドを作っておくと便利です。
トランザクションテーブルにデータを入力する際、ACCESSではフォームを作ることが多いのですが、フォームからマスターテーブルを参照することが多く発生します。
例えば、売上を入力する際に、プルダウンで顧客や商品を選択するという形です。
この際、顧客や商品のプルダウンを並び替えて使いたいことが良くあります。
こういった時にあらかじめテーブル側に並び順を持たせておくと自由に並び替えができるのです。
なお、並び順を入力する際は、5間隔等で値を入れて置くことをお勧めします。
これは、後から間にレコードを入れたいと思ったときに、連番になっていると全てのレコードの並び順の数字を変えていかないといけないためです。
例えば、並び順が0,1,2,3,4となっているテーブルに、新しく追加したレコードの並び順を2にしたい場合は、元の2を3に、3を4に、と順に変えていかなければならず、非常に煩雑です。
数値に間隔があれば間の数字を指定することで並び替えが簡単になります。
削除フィールドを作成する
テーブル作成の最後のコツは削除フィールドを作成することです。
ACCESSでレコードを削除したい場合は、EXCELと同じように該当のレコードを選択してDeleteをすれば削除することができます。
しかし、この方法はお勧めしません。
ACCESSはこれまで設計してきたように、複数のテーブルが主キーで連結されています。
そのため、他のテーブルと連結されているレコードを削除するとテーブル間のリレーションが崩れてしまうのです。
たとえば、商品テーブルで商品ID:3のレコードを削除すると、売上テーブル側に商品ID:3の売上が残っていると参照先のデータがなくなってデータの不整合が発生してしまいます。
こうしたことを防ぐためにレコードの削除は極力行わず、使わなくなったデータや間違ったデータは削除フラグを立て、表示上、削除フラグの入ったデータは見えなくするのが良い方法です。
後は同じ要領で商品テーブル、売上テーブルを作っていくだけです。
商品テーブルがこちら。
売上テーブルがこちらです。
選択クエリでテーブルをつなぐ
ここまでで、本記事の主題であるテーブルの作成はできました。
しかし、これだけではACCESSでデータがどう見えるのかわかりにくい状態です。
そこで最後に選択クエリを使って作成したデータを連結する部分をご紹介しましょう。
ACCESSのメニューから「作成」→「クエリデザイン」を選択します。
そして、先ほど作った3つのテーブル、売上テーブル、顧客テーブル、商品テーブルを追加します。
すると、ACCESSが賢いので、勝手にリレーションを設定してくれます。
後は各テーブルから下段の表示項目に必要なフィールドをドラッグアンドドロップで移動していきます。
今回は下記のように設定しました。
売上テーブルを主体とし、顧客テーブルや商品テーブルから一部の値を持ってきています。
この状態で左上の「表示」から「データシートビュー」を選択すると下記のように表示されます。
最初のEXCELにかなり近い形のデータが作れたと思います。
しかし、EXCELとは異なり、顧客テーブルで顧客名を変更すればすべての売上に表示される顧客名が一括変更されますし、商品テーブルで単価を変更すればすべての売上の単価が一括変更できます。
以上、ACCESSでテーブルを作成する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。