ACCESS データベースの基礎

データベースの基礎

マイクロソフトACCESSをこれから使ってみたい。
だけどデータベースって何?という方もいらっしゃると思います。

そこで、ACCESSデータベースの基礎についてご説明します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

データベースとは

ACCESSはリレーショナルデータベースを作成するソフトです。
まず、リレーショナルデータベースとは何かについてご説明しましょう。

リレーショナルデータベースの構造

リレーショナルデータベースとは、複数の表(テーブル)を組み合わせて一つのデータを表現するデータベースです。

みなさんよくご存じのExcelとの比較で見てみましょう。
Excelで売上管理表を作成するとこんなイメージになります。

一方で、これをリレーショナルデータベースで表すとこうなります。

EXcelは1つの表だけですが、ACCESSにすると表が分かれました。

売上マスターの商品名は、同じ値が何度も繰り返される可能性がある項目です。
そのため、商品名を管理するテーブルを商品マスターとして作成し、売上マスターから分離します。

そして、売上マスター側には商品IDという値を持たせて、商品マスターと連結させることで商品名を呼び出す構造になります。

この際、二つのテーブルを連携している商品IDをキー値(きーち)と言います。
特に、そのテーブルの中で他の行(レコードと言います)と絶対に重複しないキー値を主キーと言います。

これが、リレーショナルデータベースの基本構造です。

リレーショナルデータベースのメリット

Excelの表の方が直感的に分かっていいんじゃないか?
テーブルを分割していくことにメリットがあるのか、と感じられる方もいるかと思います。

リレーショナルデータベースにするとどんなメリットがあるでしょうか。
それは、

1つのテーブルを修正するだけで連動してすべてのデータを修正できる

ということに集約されます。

例えば、Excelでこんな売上データがあったとします。

ここで、商品名の内、「ACCESS売上管理ツール作成」を「ACCESS請求管理ツール作成」に変えたい場合、Excelなら手動で1セルずつ変えていくか、置換を行いますよね。

しかし、リレーショナルデータベースであれば商品マスターの商品名を変えるだけで、売上マスターは変えなくても商品名を一括で変えることが可能なのです。
商品マスターの商品名は1か所だけなので簡単です。

このくらいのデータ量ならExcelでもよいのでは、と思われるかもしれませんが複数年利用され、業務データが多くなってくるとExcelでの手作業修正はミスを生む可能性も高く、また複数人で使用しているとどうしてもデータのばらつきなどが出てしまいます。

こうしたミスや誤りを防ぎ、データを統一した基準で整理して格納できるのがリレーショナルデータベースの利点なのです。

ACCESSのデータベースオブジェクト

ACCESSには、データベースを構築するための様々なオブジェクトが搭載されています。

テーブル、クエリ、フォーム、レポートの4つを組み合わせてデータベースを作っていきます。
以下、4つをそれぞれご紹介します。

テーブル

ACCESSのデータが格納される表です。
行と列で表示され、ACCESS内の実データは全てテーブルに保管されます。
見た目はExcelのシートに近いのでわかりやすいかと思います。

Excelと異なるのは、データの入力方法や、入力規則を設定する画面があることです。
この画面をデザインビューと言います。

先ほどの商品テーブルですと、上記のような設定がしてあります。
商品ID。商品名などの列(ACCESSではフィールドと呼びます)が左に並んでおり、各フィールドのデータ型が設定できます。
商品名はテキストで入力、単価は通貨型等データの型をあらかじめ決めて、予期しない値が入らないように統制することが可能です。

このデザインビューはテーブルに限らず、クエリ、フォームなどのACCESSの全てのオブジェクトに存在します。
Excelは設計・開発者と利用者が同じ画面で操作しますが、ACCESSは設計・開発者がデザインビューで作成し、利用者が通常のビューで操作する、という点が最も大きな違いでしょう。

クエリ

クエリとは、テーブルのデータから一定の条件にあうレコードを抽出したり、複数のフィールドの値から計算式によって新しいフィールドを作成したりする機能です。
データの更新を一括で行ったり、集計を行うこともできます。

テーブルとの違いは、テーブルは実データを格納しているのに対して、クエリはテーブルにある実データに対する処理のみを格納しており、実データを持たない、という点です。そのため、テーブルの内容が変更されるとクエリで表示される結果(抽出結果や集計結果)が変わります。
計算式を保存しているイメージに近いでしょう。

クエリはExcleのフィルターや関数、置換、ピボットテーブル等に近い機能です。

Excelのこれらの機能が一時的なもの(毎回操作を行うたびに抽出文字列の設定や、集計範囲の設定が必要になる)であるのに対して、ACCESSのクエリは一度作成しておけば設定条件がオブジェクトとして残るため、常に使い続けられるという点が違いです。

例えば、売上テーブルからオプション商品の売上だけを抽出するクエリを作成してみます。
すると、ACCESSの画面には下図のように「オプション売上のみ」というクエリが作成されます。

このクエリを開くことでいつでも同じ条件でレコードが抽出されて、結果を見ることができます。

そして、クエリはテーブルの内容を元にしているので、テーブルのレコードが増えたり更新されたとしても、クエリの設定は変更せずに常に最新のデータを見ることができるのです。

フォーム

フォームはデータを入力したり、検索したり、集計結果を表示する専用画面です。
テーブルに直接データを入力したり、クエリでデータを抽出するだけでなく、利用者が使いやすいUI(ユーザーインターフェース)を個別に作成できるのがACCESSのメリットです。

以下に良く作成するフォームのサンプルをご紹介します。

入力フォーム

顧客、商品、売上等のデータを入力します。
プルダウンなどを使って入力を簡易化できます。

検索フォーム

入力されたデータの検索を行います。
検索条件をあらかじめ設定しておくことで、簡単な操作で必要なデータだけを見つけられます。

集計フォーム

入力されたデータの集計を行います。
毎回集計作業を行わなくても、フォームを作成しておけば画面を開くだけで最新データを元に集計されます。

メニュー画面

ACCESS起動時に最初に自動表示される画面を作成できます。
いつも見る数字やよく使い機能を呼び出すボタンを配置できます。

これらのフォームを組み合わせることで、かなりの種類のデータベースを作成可能です。

レポート

フォームはACCESSの画面上で入力を行ったり集計結果を表示する機能でしたが、結果を印刷したい場合があると思います。
レポートはACCESSに入力されたデータを元にした帳票や集計結果を印刷するための機能です。

例えば、下記のような請求書を作成することができます。

Excelの場合はデータを入力するレイアウトと印刷するレイアウトが同じですので、入力しやすくすると印刷時の見やすさが劣り、印刷時の見やすさを重視すると入力がしにくくなるという課題があります。

ACCESSは入力用のフォームと印刷用のレポートが同じデータから別レイアウトとして作成できますので、入力のしやすさと印刷時のレイアウトの美しさを両立できます。

VBA

ここまで述べてきた機能はACCESSの標準機能で、それぞれの機能ごとにオブジェクトを作成していきます。
これだけでも十分にExcelと差別化した機能なのですが、更に業務を効率化するために利用できるのがVBAです。

VBAはVisual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ)の略です。
ACCESSだけでなく、Word、Excel等のOfficeアプリケーションで使用できる簡易的なプログラミング言語です。

Excelで使っている方も多いのではないでしょうか。

ACCESSでは、フォームのボタンを押した際の動作や、レコードの抽出から一括更新させる処理などを自動化する際にVBAが使用できます。

VBAを使えば、ほぼどんな機能でも実装可能です。

以上、ACCESSデータベースの基礎についてご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。