Access実践入門 TOPへ
 ■ マイクロソフトアクセス、テーブルの作成
テーブルはそのつど最初から作る
テーブルはプログラムによって違いますから、最初からフィールド名を入力していくしかありません。
といっても、フィールド名と文字列の場合の長さと、インデックスの設定だけです。

ここでは、サンプルプログラムの「住所録Data.mdb」を開いて内容を確認してください

テーブル「ta住所録」
サンプルにあるテーブル「ta住所録」を例に手順を説明します。

新規に作る場合の手順を説明しておきます。
まずデータベースウインドからテーブルを選んで、新規作成−デザインビューを選びます。



ウィザードは使いません。

白紙のデザイン画面が出ます。
ここに、登録していきます。


では、開いているウインドを登録しないで閉じて、
サンプルの「ta住所録」のデザインを開けてください。


フィールド名、データ型、説明の項目があります。
説明欄は入力する必要はありませんが、内容をメモしています。
1行ごとに、そのフィールドの細かい設定が下にあるプロパティでできます。
たくさん項目がありますが、登録するのはデータ型によって下記の項目だけでいいです。

・テキスト型−[フィールドサイズ]、[インデックス]
 [フィールドサイズ]は文字数です、漢字は1文字で数えます。少し長めにとっておけばいいでしょう。ただし、ここの住所録番号はコードとして使いますから5桁にした場合、99999人までの登録しかできません
 [インデックス]は、検索にその項目を使ったりする場合に[あり(重複あり)]にしておきましょう。

 ここで主キーのついて説明しておきます
テーブルには1つだけ主キーを設定しておきましょう。フィールド名にカーソルがあるときに、右ボタンをクリックして、主キーをクリックします。するとキーのアイコンが付きます。
主キーが設定されたフィールドは、[インデックス]が[あり(重複なし)]となり、このフィールドに同じ内容の文字(あるいは数字)が登録できなくなります。
とりあえず、一番大事なコード的なフィールドに主キーを必ず設定すると覚えてください。

・数値型−[フィールドサイズ]
 [フィールドサイズ]は通常、長整数型でいいでしょう。9億くらいまでまでの数値が扱えます。
ただし、小数点以下の数値を扱う場合は、単精度浮動小数点型か倍精度浮動小数点型を使います。

・日付型−日付型の場合はプロパティは関係ないです。
[インデックス]を[あり(重複あり)]にするくらいでしょうか。
[インデックス]をあまり意識することはありません、設定されていなくても並び替えもできますし、検索もできます、スピードが落ちると感じることも、通常ありません。

説明の欄については、そのフィールドのことについて少し書いておけば、後で見たときに、わかりやすいです。

これで、できました。
新規でテーブルを作った場合、ウィンドを閉じると、テーブル名を聞いてきます。



名前を付けて登録しましょう。
名前は、後からでも変えられます。
ただし、プログラムをどんどん作ってから、変更すると修正が大変ですから、テーブル名、フィールド名はよく考えて付けましょう。
テキスト型の場合のフィールドサイズの変更は、プログラムができあがってからでも簡単に変更できます。たとえば、住所の長い人が居て、長さを大きくしても他に何も影響ありません。
ただし、長さを小さくする場合は、登録されているデータが切られてしまいますので注意してください。

リレーションシップの登録
リレーションシップとは、何でしょう。

これが登録後の画面です。

リレーションシップとは「住所録Data.mdb」の個々のテーブルがどのように関わり合っているかを線をつないで、登録することによって作られます。
リレーションシップは登録しなくても、データとしては使えるのですが、必ず登録するようにしてください。データの矛盾を防ぐことができますし、クエリーを作るときにも解りやすいです。
何より、リレーショナルデータベースの特徴がここに集約されているのです。
この画面を見るだけで、「住所録Data.mdb」のすべてを知ることができます。

たとえば、「ta勤務先」に勤務先番号001で○○株式会社がとうろくされていて、「ta住所録」に勤務先番号001と登録されている人がいた場合に、「ta勤務先」の001番のデータを誰かが削除してしまったら、「ta住所録」の先程のデータが参照先が無くなって、エラーになってしまいます。リレーションシップを登録しておくと、「ta勤務先」のデータを削除しようとしても、どこかのテーブルでそのデータを参照していた場合には、削除できないようになります。

手順を説明します
メニューから−「ツール」−「リレーションシップ」を選びます
白紙のウィンドが出ます。
メニューから−「リレーションシップ」−「テーブルの表示」を選びます


ここで、すべてのテーブルを追加で、下のウインドに出します。
「ta和暦」は線は付きませんが全部出しておきましょう


勤務先番号を例にとって説明します。
勤務先番号を1クリックでドラッグしてもう一つの勤務先番号の上でドロップします(どちらからでもかまいません)

参照整合性にチェックを付けます。
「結合の種類」ボタンをクリック

データが1対1になる場合は、一番上になります。
ここでは、「ta住所録」に同じ番号の勤務先番号が何個も登録されて、「ta勤務先」には1つだけですので、一番下になります(1対多)
「OK」ボタンで登録して、作成ボタンで、作成します。

このように、リレーションシップを登録します。

最後にウィンドを閉じて、リレーションシップのレイアウトの変更を登録して、終わりです

少し複雑かもしれませんが、重要な部分です。
作っているうちに、慣れてきますので、あまり難しく考えないでください。


フィールドの連鎖更新とフィールドの連鎖削除のついて、話をしておきます。
リレーショナルデータベースの場合、リレーションシップで登録しているコードが複雑な関係で、相互に影響をあたえます。
たとえば、片方のデータのコードを変更すると、相手に存在する同じコードも自動で変更してくれるのが連鎖更新です。一方のデータが削除された場合、その下に存在する、明細的なデータを自動で削除してくれるのが、連鎖削除です。連鎖削除の場合、連鎖データを削除していいかどうかの、確認画面が出てしまいます。

ただ、こういった重要なコード変更や削除はプログラマー自身がプログラムの中で、自分で管理しなければいけないものだと考えます。データベースに任せてしまうべきものではないのです。
したがって、サンプルプログラムでは、この機能は使いません。

各テーブルの内容

・「ta和暦」
誕生日入力時、西暦で誕生日を言える人は少ないでしょう。
そのための選択項目として、作っています。
このように、将来増加するかもしれないものは、表に出して、追加登録できるように、テーブルを作っておくと便利です。
たとえば、性別のように、将来にわたって変わらないものは、プログラムの中に書いてしまえばいいものです。

 和暦番号:番号がないと、明治から平成に順番通りに並べて表示できないからです
 和暦名:和暦の名称が入ります


・「ta区分」
住所録に登録する人を区分けするものです。
 区分名:会社関係、友達、近所の人などを登録します


・「ta勤務先」
コード化してたくさんのデータを参照するような場合、このようなものを作っておくと便利です。
 勤務先番号:3桁の固定長、000〜999
 勤務先名:名称

・「ta住所録」
メインとなるデータです。
ここでの入力を、簡単にするために、上記のようなテーブルを前もって準備しています。

 住所録番号:これは個人コードみたいなものです。00001から順に付けていてばいいでしょう。ただ、プログラムを作る中で、全国的に決まっている番号があるようなもの、たとえば銀行の番号(4桁)、県の番号(2桁)などを扱う場合はその桁数にあわせるようにして作ると、後々便利に使えます。
ある程度コードには意味を持たせるようにしましょう。(コードを見たら、その内容がイメージできるような)

 名前:名前
 ふりがな:ふりがな

 区分名:「ta区分が」選択されて入ります、フィールド名は「ta区分」で使っているのと同じにしておかないとわかりにくくなります。

 郵便番号:郵便番号(000-0000)
 住所:住所
 電話番号:電話番号
 生年月日和暦:「ta和暦」から和暦名称が入ります
 生年月日:和暦の次の年月日が入ります(00年00月00日)

 生年月日日付:なぜこの項目が必要なかというと、上記2項目は入力する人が入力しやすいように作っているものです。直接日付型のフィールドに入力させると、データのチェックもしにくいですし、入力もしにくいのです。
ここの項目は、集計や、検索の時に使います

 性別:性別
 勤務先番号:「ta勤務先」の勤務先番号が選択されて入ります
 めも:メモに使います


・「進物」
住所録にこんなもの必要ないのですが、学習のために用意しました。
顧客管理で、よく顧客情報とは別に顧客一人に対して複数のデータを持たせる必要がある場合が多々あります。
たとえば、顧客ごとの売り上げ履歴、顧客ごとのメンテナンス履歴等・・・・・

ここでは、自分が送ったお祝い、中元、歳暮の管理をしようというものです。

 進物番号:この番号は入力する人には関係ありません。自動で付けられます。プログラムの中では主キーに設定されていて、重要なものです。メインデータに対して複数レコードのデータを持つようなテーブルの場合こういったオートナンバーを使うことになります。

 住所録番号:「ta住所録」の住所録番号は入ります。
 進物日付:入力用です。ここでは西暦入力なので元号は使いません
 進物日日付:集計用です。
 進物内容:内容
 進物金額:金額。合計計算、集計クエリーの学習のために用意しました