データベースの作成

ここでは、オリジナルのコンピュータを製造して販売店に卸す業務を例にとって、データベースを作成する流れを説明します。

この業務では、取り扱う「商品」と「販売先」の情報が事前に必要です。
取引が発生して「売上伝票」を入力することにより、取引ごとの情報(日時、販売先)と売上情報(販売先、商品と数量)が蓄積されていきます。
取り扱う商品や販売先の情報、取引で蓄積される情報は、「テーブル」で管理します。

テーブルに蓄積された情報から、販売先への「請求書」を出力します。取引の日時と販売先をキーとして、販売した商品名・単価・販売数を出力し、さらに合計値を算出して請求書に記載します。

 

●取り扱う「商品」と「販売先」のテーブル

<商品テーブル(1)>

製造・卸している製品のラインナップを「商品テーブル」に登録します。ここでは、以下の6商品が登録されているものとします。

商品ID:

商品を管理するID(連番)

商品:

商品名

単価:

商品の単価

<販売先テーブル(2)>

販売先であるコンピュータの販売店を「販売先テーブル」に登録します。ここでは、以下の3社が登録されているものとします。

販売先ID:

販売先を管理するID(連番)

販売先:

販売先の販売店名

住所:

販売先の住所

 

●「取引情報」と「売上情報」を管理するテーブル

<取引テーブル(3)>

1回の取引ごとの情報が「取引テーブル」に登録されます。1取引=1レコード記録されていきます。
このテーブルでは、「いつ」「どの販売先と」取引したかを管理します。

取引ID:

取引を管理するID(連番)

日時:

取引を行った日時

販売先ID:

取引を行った販売店の販売先ID
※「販売先テーブル」の販売先IDと関連付けます。

<売上テーブル(4)>

販売した商品の情報が「売上テーブル」に登録されます。取引に含まれる商品ごとに1レコード記録されていきます。1回の取引では、1種類の商品が販売されるだけでなく、複数の商品が販売されることもあります。
このテーブルでは、「どの取引で」「どの商品を」「何個」販売したかを管理します。

売上ID

売上を管理するID(連番)

取引ID

売上に該当する取引の取引ID
※「取引テーブル」の取引IDと関連付けます。

商品ID

販売した商品の商品ID
※「商品テーブル」の「商品ID」と関連付けます。

 

●4つのテーブルの関連付け

4つのテーブルの関連付けは次の図のようになります。

 

 

tip
..\..\Media\pict-tips.png

複数のテーブルで管理するメリット

ここで紹介している業務に必要な情報を1つにまとめると、以下のようなテーブルになります。

これを4つのテーブルに分けて管理すると、以下のようなメリットがあります。

  • 修正が容易
    例えば、商品「ノートPC」の単価を修正したい場合、1つにまとめたテーブルだと、該当する商品のすべての「単価」を修正する必要がありますが、テーブルを分けている場合は、商品テーブルの該当する商品1ヵ所を修正するだけで済みます。

  • データの量を少なくできる
    データベース全体に格納される文字数は、ここで挙げている例の場合、1つにまとめたテーブルだと697文字、4つのテーブルに分割した場合は合計214文字です。これは、まとめたテーブルだと「商品名」などの情報が何度も入力されるのに対し、分割したテーブルだと情報が各テーブルに集約され、他テーブルからは参照だけで済むためです。
    データ量が少ない方がForguncyへの負担も少なく、処理速度も遅くならずに済みます。将来、商品のラインナップや販売先数が増加するにつれ、この情報量の差はどんどん大きくなっていきます。


●取引情報・売上情報を入力する画面

紙の売上伝票と同じ様式で、取引情報・売上情報を入力する「売上伝票の入力画面」を用意します。
入力画面から入力した情報は、取引テーブルに1レコード、売上テーブルに1つ以上のレコードとして格納されます。

<入力する情報>

売上伝票の入力画面では、取引ごとに以下の情報を入力します。

取引のあった日時

 

販売先名

 

販売した商品名と数量

※「商品テーブル」が参照され、商品名をコンボボックスの一覧から選択できます。

<テーブルを参照して記載される情報・自動算出される値>

「販売先名」を入力すると、「販売先テーブル」を参照して、該当する販売先に紐付く住所が入力画面に自動入力されます。
「商品名」を入力すると、「商品テーブル」を参照して、該当する商品名に紐付く単価が入力画面に自動入力されます。
商品ごとの合計(単価×数量)や取引全体の販売数、小計、消費税込みの合計値は、自動算出されます。

<テーブルへ格納される情報>

入力画面から入力した情報は、「取引テーブル」には1レコードの取引情報として格納され、「売上テーブル」には1つ以上のレコードの売上情報として格納されます。

 

●請求書の出力

テーブルに蓄積された情報から、販売先への「請求書」を出力します。

<抽出・集計される情報>

請求書に含める販売先と請求期間に当たる取引IDが「取引テーブル」から抽出されます。

例えば、「株式会社パソコン△△」」の「2017年4月」の納品分の請求書を作成するとします。
「販売先テーブル」で、株式会社パソコン△△の販売先IDが「2」であることを確認します。

「取引テーブル」で、販売先ID「2」の取引のうち、「2017年4月」の取引IDが「2」と「5」であることを確認します。

「売上テーブル」で、取引IDが「2」と「5」の売上IDが「4~6」と「11~14」の7レコードであることを確認します。これが、請求書に出力される売上になります。

売上ID「4」と「11」は同じ商品IDなので、1レコードにマージされます。

<請求書に出力される情報>

抽出した売上IDの7レコードについて、「売上テーブル」から各種テーブルを参照して、請求書に情報を出力します。

販売先名・住所:

売上IDに紐付く取引IDをキーに「取引テーブル」の「販売先ID」を参照します。さらに販売先IDをキーに「販売先テーブル」の「販売先ID」を参照して、紐付く「販売先」と「住所」を出力します。

商品名・単価:

売上IDに紐付く商品IDをキーに「商品テーブル」の「商品ID」を参照して、紐付く「商品名」と「単価」を出力します。

個数:

売上IDに紐付く商品IDをキーに「売上テーブル」の「数量」を参照して出力します。

商品ごとの計:

商品の単価×個数が出力されます。

個数の合計:

商品の個数の合計値が出力されます。

総計:

商品ごとの計の合計値が出力されます。

ご請求金額:

総計が参照され、出力されます。