トップ > スキル : アプリケーション > Access(アクセス) > データベースシステム(テーブルの設計と作成)

Access

売上管理データベースの作成

ここでは、売上管理のデータベースをAccessで作成していきます。
重要なポイントは、まずテーブル設計です。Accessでは、まずテーブルを作成します。このテーブルの作り方が良くなければ、後々他のオブジェクト(クエリ、フォーム、レポート)がうまく機能しません。失敗のない、効率的なデータベースを作るためにしっかりとした設計を行います。

テーブル設計

これから作成するデータベースは、日々発生する商品の売上データを入力、蓄積して、月あたりの売上結果や個々の商品の売上状況などを調べられるものとします。

“酒類卸売業”を営んでいる某会社が、日々発生している売上データを蓄積するデータベースシステムを構築する流れにします。

行いたい作業は、日々発生する売上データの入力、一ヶ月単位の売上状況を確認することです。
まず、必要な項目を書き出します。テーブルの切り分けは、あるテーマに沿ったものだけを1つのテーブルとして作成します。

この売上管理に必要な項目をピックアップすると、以下のようになります。

  • 商品情報・・・商品名、単価、在庫の有無
  • 顧客情報・・・顧客名、住所、電話番号など
  • 社員情報・・・顧客に応対した担当者名、役職、携帯番号
  • 売上データ・・・売上日、商品名、顧客名、単価、数量、金額、消費税率、入金済、発注所番号、摘要など

売上データで考えなければならないことは、1顧客が購入する商品は複数発生する可能性が大きいということです。
売上伝票は1枚でも、商品は複数存在することになれば、売上伝票としてのテーブルと、1つの伝票の中の詳細情報のテーブルと分ける必要があります。

最終的に以下のようなテーブルを作成することにします。

  • 商品テーブル・・・商品ID、商品名、単価、在庫の有無
  • 顧客テーブル・・・顧客ID、会社名、フリガナ、姓、名、郵便番号、都道府県、市区町村、番地、建物名、電話番号
  • 社員テーブル・・・社員ID、姓、名、役職、携帯番号
  • 売上テーブル・・・売上NO、顧客ID、社員ID、売上日、発注書番号、消費税率、入金済、摘要
  • 売上詳細テーブル・・・詳細ID、売上NO、商品ID、数量、割引率

各テーブルには、各レコードの一意とするフィールドとして、IDまたはNOを設けます。そして、テーブル同士を関連付けるために売上データおよび売上詳細のテーブルに、参照するためのキーフィールドを入れています。

図式にすると以下のようになります。

テーブル設計図

各テーブルのフィールドのデータ型とフィールドプロパティを以下のように設定します。

◆ テーブル名:商品テーブル
フィールド名データ型フィールドサイズIME入力その他
商品ID(主キー)テキスト型10オフ 
商品名テキスト型30ひらがな
単価数値型整数型 
在庫有無Yes/No型  
◆ テーブル名:顧客テーブル
フィールド名データ型フィールドサイズIME入力その他
顧客ID(主キー)テキスト型3オフ 
会社名テキスト型30ひらがなフリガナ
フリガナテキスト型50ひらがな 
テキスト型10ひらがな
テキスト型10ひらがな
郵便番号テキスト型8オフ住所入力支援(2分割)
都道府県テキスト型10  
市区町村テキスト型50 
番地テキスト型20ひらがな
建物名テキスト型20ひらがな
電話番号テキスト型12オフ定型入力(電話番号)
◆ テーブル名:社員テーブル
フィールド名データ型フィールドサイズIME入力その他
社員ID(主キー)テキスト型3オフ 
テキスト型10ひらがな
テキスト型10ひらがな
役職テキスト型12ひらがな
携帯番号テキスト型13オフ定型入力(999¥-9999¥-9999;0;_)
◆ テーブル名:売上テーブル
フィールド名データ型フィールドサイズIME入力その他
売上NO(主キー)オートナンバー型長整数型  
顧客IDテキスト型3オフ
社員IDテキスト型3オフ
売上日日付/時刻型 オフ書式:日付(S)
発注書番号テキスト型3オフ 
消費税率数値型単精度浮動小数点型 
入金済Yes/No型  
摘要メモ型 ひらがな
◆ テーブル名:売上詳細テーブル
フィールド名データ型フィールドサイズIME入力その他
詳細NO(主キー)オートナンバー型長整数型  
売上NO数値型長整数型 
商品IDテキスト型10オフ
数量数値型整数型 
割引率数値型単精度浮動小数点型 

顧客会社の代表者名として「姓」と「名」フィールドを設けています。社員名も同じようにしていますが、名前を1つのフィールドにまとめてもかまいません。ここでは、敢えてすべての名前を一覧表示するより、苗字のみを表示したい場合を想定しています。

大まかなテーブル設計ができたら、Accessでテーブルを作成していきます。最初から細かな設定をたくさんしてしまうと作成している段階で、うまく動作しないことがあります。基本的な設定を行い、それがうまく動作してから、より細かな設定変更をするほうが効率的です。

テーブルの作成

Accessを起動させて、新規データベースとして「売上管理DB.mdb」を作成します。保存場所は、マイドキュメントにします。以下の手順で「売上管理DB」を作成してください。

  1. Accessを起動させて、[空のデータベースを新規作成]の[空のデータベース]をクリックします。
  2. 右側の[空のデータベース]欄の[ファイル名]に「売上管理DB」を入力します。
  3. [作成]ボタンをクリックします。

タイトルバーに[売上管理DB]と表示され、新規のテーブルが表示されます。

各テーブルをテーブル設計に従って作成します。

各テーブルにデータを入力します。

あらかじめ、サンプルデータとして各テーブルのデータをExcelのスプレッドシートに作成していますので、インポート機能を使用して、各テーブルにデータを入れていきます。

① まず、顧客テーブル内にデータをインポートします。テーブル名の上で右クリックし、[インポート]-[Excel]でクリックします。

② [外部データの取り込み-Excelワークシート]ウィンドウが表示されます。
[参照]ボタンをクリックして、「データベースサンプルデータ.xls」を指定します。次に、[レコードのコピーを次のテーブルに追加する]を選択し、「顧客テーブル」を一覧から指定します。
[OK]ボタンをクリックします。

※ ファイルの場所は、サンプルデータを保存している場所を指定してください。

③ [ワークシートインポートウィザード]ダイアログボックスが表示されます。
「顧客」を選択して、[次へ]ボタンをクリックします。

④ 先頭行がフィールド名として扱われていることを確認します。
[次へ]ボタンをクリックします。

⑤ インポート先のテーブル名を確認します。
[次へ]ボタンをクリックします。

⑥ [インポート操作の保存]画面になります。内容に「・・・インポートしました。」を表示されていることを確認します。
[閉じる]ボタンをクリックします。

※「インポートされませんでした。」という文面の場合は、AccessとExcelのフィールド名、データ型が一致しないことが原因です。

⑦ 「顧客テーブル」をダブルクリックして、インポートされたことを確認します。

インポートした後に、データがすべて表示されていることを確認します。商品名などの文字列が途中で切れているような場合は、フィールドサイズを大きな数字に変更する必要があります。また、逆にフィールドサイズが小さくても問題がなければ、サイズを小さくしてデータベースの容量を節約します。

商品テーブルの[単価]フィールドは、金額なので“通貨スタイル”を適用すれば、見やすくなります。[単価]フィールドの[書式]プロパティで「通貨」を設定してもかまいませんが、通貨の書式を設定することでメモリの消費を増やすことになります。

テーブルは、データの格納場所という捉え方をしますので、あまり書式にこだわる必要はありません。このデータベースを利用するユーザは、たいていフォームやレポート上で操作を行うので、全体の容量を考慮してフォームやレポートで書式を設定するようにします。
同様に、他のテーブルにもデータをインポートします。