ここでは、オリジナルのコンピュータを製造して販売店に卸す業務を例にとって、データベースを作成する流れを説明します。
この業務では、取り扱う「商品」と「販売先」の情報が事前に必要です。
取引が発生して「売上伝票」を入力することにより、取引ごとの情報(日時、販売先)と売上情報(販売先、商品と数量)が蓄積されていきます。
取り扱う商品や販売先の情報、取引で蓄積される情報は、「テーブル」で管理します。
テーブルに蓄積された情報から、販売先への「請求書」を出力します。取引の日時と販売先をキーとして、販売した商品名・単価・販売数を出力し、さらに合計値を算出して請求書に記載します。
取り扱う「商品」と「販売先」のテーブル
<商品テーブル(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つのテーブルの関連付けは次の図のようになります。
ヒント:
複数のテーブルで管理するメリット
ここで紹介している業務に必要な情報を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をキーに「売上テーブル」の「数量」を参照して出力します。 |
商品ごとの計: |
商品の単価×個数が出力されます。 |
個数の合計: |
商品の個数の合計値が出力されます。 |
総計: |
商品ごとの計の合計値が出力されます。 |
ご請求金額: |
総計が参照され、出力されます。 |