Access の基礎

MS Office の中の Access

この授業でもお話しましたが、Access も PowerPoint と同じく MS Office の一部のアプリケーションです。 ただ、この Access も PowerPoint と同様、Word や Excel と比べると、より仕事用の色合いが濃いアプリケーションです。 しかも、PowerPoint 以上に仕事用の色合いが濃いものです。 ですので、皆さんのパソコンでも、Access が入っていても使ったことがないということがほとんどかと思います。

Word や Excel では、2003 以前と 2007 以降でファイル形式とその拡張子が異なっているということもお話しましたが、Access でも 2003 以前と 2007 以降では、ファイル形式と拡張子が異なっています。 Access 2003 以前では、拡張子は .mdb となっていますが、Access 2007 以降では、.accdb となっていて、ファイル形式も違います。

では、このように仕事用の色合いが強いという Access を大学の授業であるこの授業で学ぶことに何か意味があるのでしょうか。 それを理解していただくためには、そもそもデータベースとは何か、何に使うものなのか理解する必要があります。

データベースとは何か

何度も言っているように Access とはデータベースのアプリケーションです。 では、そもそも「データベース」とは何でしょうか。 「データ」とは情報や資料のことです。 「ベース」とは基地や根拠地という意味です。 つまり、データベースとは、情報や資料を集めておく場所だと思えばいいでしょう。

私たちが扱うデータの集まりにはどんなものがあるでしょうか。 日常生活の中では、例えば、家計簿や住所録などがあるでしょう。 それ以外でも、学術的には、研究に使うデータを集めたものや研究分野の文献のリストなどがあるでしょう。 そのようなデータをパソコン上でどうやって整理すればいいでしょうか。 一番分かりやすいのは、Excel のような表計算のアプリケーションを使って整理することでしょう。 実際、この授業でも Excel のサンプルとして家計簿(出納表)を使いました。 家計簿のようなデータは必ず数字の計算が伴うので、計算が得意な表計算のアプリケーションを使うのが適切でしょう。

では、住所録のようなデータについて考えてみましょう。 住所録を表計算のアプリケーションで作ってみるとします。

普通に考えると一人あたり一行使って、その人の氏名、住所、電話番号などを一行に書くことになるでしょう。 でも、人によっては、住所が二つある人(下宿と実家)や電話番号が二つある人(自宅の番号と携帯電話の番号)もいます。 そのような場合、表の中の列はどうしましょうか。 例えば、「住所1」と「住所2」のように住所の列を二つ作ることが考えられます。 電話番号も「電話番号1」と「電話番号2」のようにできるでしょう。 しかし、住所や電話番号が一つしかない人がいることも考えると、その人の分は空白にしなければならなくなり、表が冗長になってしまいます。 さらに、列を増やせば増やすほど表が横長になってしまい、アプリケーション上で見にくくなってしまいます。 一般に、アプリケーション上では、縦のスクロールはしやすいのですが、横のスクロールはしにくくなっています。 なので、表計算のアプリケーションでは、横に長い表よりも縦に長い表の方が扱いやすいのです。

また、あまり参照はしないが記録はしておきたいようなデータがある時はどうしましょうか。 例えば、年賀状を出したかどうかを記録しておきたいことがあります。 それを表の中に加えてもいいのですが、そうすると上と同様に表が横長になってしまいます。 一年に一回参照するかどうかというデータのために、全体が扱いにくくなってしまうのです。

ここで、データベースの登場です。 詳しい内容は追々説明していきますが、データベースを使うと、表(テーブル)を小さなまとまり毎に分解し、それらの表の間の関係(リレーションシップ)を定義して、表と表を結び付けるようにすることができます。 そして、クエリ(query)を使うことにより、複数の表から今必要なデータだけを取り出すということができます。

このように、データの性質、内容によって表計算を使うかデータベースを使うか変わってきます。 家計簿にわざわざでデータベースを使う必要はありませんが、住所録や文献のリストのようなデータの場合は、データベースを使うとより効率良くデータを扱うことができるようになります。 また、研究のデータの場合、数値から統計処理をするようなデータの場合は、表計算を使う方がいいですし、複雑な構造を持ったようなデータの場合は、データベースの方が便利でしょう。

データベースを使ってみる

今回もいつものようにサンプルファイルを用意しました。 ダウンロードして開いて下さい。

このファイルをダブルクリックすると、Access が立ち上がります。 ウィンドウの上部に「セキュリティの警告」が出ますが、今回は無視してもらって大丈夫です。

このファイルを開くと図1 のように、Access の大きなウィンドウが開きます。 さらに、ウィンドウの左端に「すべての Access オブジェクト」と書かれたウィンドウが開きます。 これを「ナビゲーションウィンドウ」と呼びます。 このウィンドウからデータベース内のデータなどを参照します。 また、ウィンドウ上部のリボンは、MS Office 2010以降の他のアプリケーションと同様です。

Access の起動
[図1] Access の起動

データベースの構成要素

まずは、データベースの構成要素となるものをいくつか説明しましょう。

テーブル
データを格納するもの。 通常、一つのデータベースの中に複数のテーブルが存在する。 表の形式になっていて、それぞれに固有の名前が付いている。
フィールド
テーブルの中のデータの種類。 例えば、「個人」テーブルの中の「名前」フィールド、「住所」テーブルの中の「郵便番号」フィールドなど。 表の列に対応する。
レコード
テーブルの中のデータの一項目。 「個人」テーブルの中の「個人ID 3」のレコードなど。 表の行に対応する。

ナビゲーションウィンドウの[テーブル]--[個人]をクリックすると図2のような「個人」テーブルが現れます。 他のテーブルも同様に参照できます。 ここで、テーブルの新しいレコードを入力することができます。 詳細については後述します。

Access のテーブル
[図2] Access のテーブル

主キー
テーブルの中でレコードを識別するためのもの。 例えば、「個人」テーブルで同姓同名、生年月日も一緒の人がいた場合、そのままだと識別できないが、レコード毎に重複のない数字が入る「個人ID」フィールドを加えることにより識別できるようになる。 この場合、「個人ID」フィールドが主キーになる。 テーブル毎に必ず一つの主キーが必要になる。
外部キー
別のテーブルの主キーを参照しているフィールド。 「住所」テーブルの「個人ID」フィールドは「個人」テーブルの「個人ID」フィールドを参照している。 これにより、「個人」テーブルの名前や生年月日と「住所」テーブルの住所などを結び付けることができる。 実際にどの外部キーと主キーが結び付いているかは、後述の「リレーションシップ」で定義する。

テーブル間のリレーションシップ

「データベース ツール」タブの「リレーションシップ」を選択すると図3のような画面が出てきます。 これは、テーブルの間の関係を定義しています。 上述の通り、二つのテーブルは主キーと外部キーの関係を通して結び付いているのですが、その関係を定義する必要があります。 個人テーブルの個人IDフィールドと住所テーブルの個人IDフィールドが結び付いていますが、たまたまフィールドの名前が一致しているだけかもしれないので、Access にその結び付きを教えてやる必要があります。 これがリレーションシップです。

また、このサンプルでは、電話番号テーブルが住所テーブルと、携帯電話テーブルが個人テーブルと、それぞれリレーションシップが設定されています。 これは、同じ電話でも、電話(固定電話番号)は住所と結び付いていて、携帯電話は個人と結び付いているからです。 さらに、このサンプルでは、すでにリレーションシップが定義されているので、ここでこれ以上操作する必要はありませんが、新たな関係を定義するには、フィールド名をドラッグします。

テーブル間のリレーションシップ
[図3] テーブル間のリレーションシップ

テーブルのデザインビュー

それぞれのテーブルがどのようなフィールドを持っているかという情報をデザインビューと呼びます。 既存のテーブルのデザインビューは図4のようにナビゲーションウィンドウのテーブル名を右クリックした時のメニューから開くことができます。 サンプルのテーブルのそれぞれのデザインビューを見てみましょう。

テーブルのデザインビューを見る
[図4] テーブルのデザインビューを見る

デザインビューは図5のように表示されます。 デザインビューの上の部分にフィールド名のリストとそれぞれのデータ型が表示されています。 データ型はそのフィールドにどんなデータが入るのか、数値なのか文字列なのか日付なのか、ということを定めています。 レコードの入力の際に他のデータ型のデータを入力してしまうとエラーが出ます。 これにより、データの整合性を保つことができます。

下の方にはフィールドプロパティとして、もう少し詳しい内容が出ています。 ここで、データがどのように表示されるか、入力の際に IME をオンにするかオフにするかなどを決めることができます。

テーブルのデザインビュー
[図5] テーブルのデザインビュー

なお、今回のサンプルでは必要ありませんが、新規テーブルは、「作成」--「テーブル」で作成することができます。 なお、新規テーブルを作成する際に主キーを定めずにテーブルを作ると保存する時にメッセージが出ます。 自動的に主キーが定義されますので、よく分からなければ Access に任せておきましょう。

データの入力

では、ここで、実際に新規にデータを入力してみましょう。

先ほど開いた個人テーブルをもう一度開いてみましょう。 テーブルの一番下の空欄をクリックして入力できる状態にします。 「名前」「ふりがな」「生年月日」をそれぞれ入力します。 この際、「個人ID」フィールドは「オートナンバー型」となっていて自動的に数字が入りますので、自分で数字を入れる必要はありません。 また、このサンプルでは「ふりがな」も「名前」で入力した文字のふりがなが自動的に入るようにしています。 さらに、デーブルのデザインビューで、データ型や IME のオンオフを設定しているので、「名前」フィールド、「ふりがな」フィールドで自動的に IME がオンになったり、「生年月日」フィールドで有り得ない日付を入れるとエラーが出たりすることが確認できるはずです。 生年月日に有り得ない日付を入れてみて下さい。 図6 のようにエラーが出るはずです。

有り得ない日付を入れるとエラーになる
[図6] 有り得ない日付を入れるとエラーになる

次に、住所テーブルを開いてみて下さい。 ここに、新規データの住所を入れるわけですが、先ほど個人テーブルに入れた個人名とこれから入れる住所をどのように結び付ければいいでしょうか。 別テーブルなので、お互い独立しているように見えるかもしれませんが、ここでポイントになるのは、住所テーブルの個人IDフィールドです。 個人テーブルでの入力の際に自動的に入った個人ID と同じ数字を住所テーブルの個人IDフィールドに入れます。 これで、個人名と住所を結び付けることができます。 このサンプルでは、この個人IDは、プルダウンメニューから選ぶことができるようにしています。

個人ID をプルダウンメニューから選ぶ
[図7] 個人ID をプルダウンメニューから選ぶ

わざわざ個人ID の数字を見て入力するのは、面倒に感じるかもしれませんが、このようにすることにより、「自宅」や「職場」「下宿」「実家」など複数の住所を同時に入力することができます。 これが、表計算ソフトよりも、データベースの方が効率的に使える部分なのです。

クエリ

リレーションシップは定義しましたが、このままでは、必要なデータが複数のテーブルに分かれているので、データが少々見づらいですね。 例えば、郵便を出す時などは、氏名と住所が一つの表にないと不便です。 これを一つにまとめて見やすくするためには、「クエリ」というものを使います。 このクエリでは、単にすべてのテーブルをまとめるだけではなく、特定のフィールドだけを取り出すことや、特定の条件を満たすレコードだけを取り出すこともできます。

例として、「個人」テーブルと「住所」テーブルから、「氏名」「郵便番号」「都道府県」「住所」「建物名」を取り出すクエリを作ってみましょう。

まず、「作成」--「クエリ」の「クエリ デザイン」を選択します。 左の「クエリ ウィザード」ではないので注意しましょう。 すると「テーブルの表示」のウィンドウが出てきますので、今使いたいテーブルを追加します。 この例の場合は「個人」テーブルを選択して追加、「住所」テーブルを選択して追加します。 終わったら「閉じる」を押します。

テーブルの表示
[図8] テーブルの表示

すると、図9のようなウィンドウが出てきます。 ウィンドウの上の部分に追加したテーブルが出てきます。 下の部分で追加したテーブルのどのフィールドを表示するか、プルダウンメニューから選びます。 メニューでは、テーブル名とフィールド名を "." (ピリオド) で結んだ形式で表示されています。

クエリ
[図9] 選択クエリ

表示したいテーブルとフィールドを選択
[図10] 表示したいテーブルとフィールドを選択

この例では、以下のようになればクエリの完成です。

クエリの完成
[図11] クエリの完成

このクエリを閉じると「名前を付けて保存」のウィンドウが出てきますので、適宜名前を付けます。 ナビゲーションウィンドウに新しいクエリができていますので、これを開くとクエリの結果が表として表示されます。 今回のサンプルではすでに「住所 クエリ」を用意していますので、皆さんが作ったクエリがこのクエリと一致するか確認しましょう。 クエリのデザインビューを表示するとクエリの内容を確認できます。

なお、クエリでは、デザインビューの下の抽出条件の部分に条件を入れることにより、特定のフィールド内容を持ったレコードだけを抽出することができます。 図12の例では、「電話番号」テーブルから「種類」フィールドの内容が「職場」であるレコードだけを抽出し、名前と電話番号と種類を表示させています。 表示で使っているのは、個人テーブルと電話番号テーブルだけですが、リレーションシップのつながりのために、クエリの作成の際には、住所テーブルも必要であることに注意して下さい。 また、図13の例は、先ほどの住所クエリ同様ですが、都道府県フィールドの値が「東京都」と「神奈川県」であるレコードだけを抽出したクエリです。 このように複数の条件を「または」の関係で取り出すこともできます。

なお、サンプルには、「種類」フィールドが「携帯電話」であるレコードだけを抽出した「携帯電話番号 クエリ」と、「職場」か「自宅」であるレコードだけを抽出した「固定電話番号 クエリ」を用意していますので、デザインビューを見てクエリの内容を確認して下さい。

特定のレコードだけを抽出(1)
[図12] 特定のレコードだけを抽出(1)

特定のレコードだけを抽出(2)
[図13] 特定のレコードだけを抽出(2)

クエリの結果のエクスポート

このクエリの結果のデータを別のアプリケーションに持っていきたいということもあると思います。 そのために、クエリを Excel のファイルや HTML 文書、テキスト文書などに変換することができます。 このようなデータの変換を「エクスポート」と呼びます。 一般に、エクスポートという言葉は Access 以外のアプリケーションでも、データの形式の変換という意味で使われます。

クエリからのエクスポートは、クエリを開いた状態で「外部データ」--「エクスポート」から行うことができます。 Excel ファイルにエクスポートするには、「Excel」のアイコンをクリックします。 クリックするとエクスポートのダイアログが出てきますので、保存先などを選択してエクスポートします。

クエリからエクスポート
[図14] クエリからエクスポート

また、単にクエリを Excel にコピーしたいということでしたら、単純にクエリ全体を選択してコピーし、それを Excel に貼り付けるという方法でも可能です。 クエリ全体を選択するためには、クエリの左上の余白をクリックします。 なお、Excel に貼り付ける際には、そのまま貼り付けると、余計な書式もついてくるので、「貼り付けのオプション」で、「貼り付け先の書式に合わせる」を選んで貼り付けた方がいいでしょう(図16)。

クエリの右上をクリックして選択
[図15] クエリの左上をクリックして選択

貼り付け先の書式に合わせる
[図16] 貼り付け先の書式に合わせる

補足

今回は時間の関係上、Access の基礎の基礎しか解説していません。 さらに勉強してみたいという方は、一般の書籍や以下のリンクを参考にして下さい。


今回の授業のトップへ 授業のホームへ