通常、業務システムの流れは、以下のようになります。
入力画面 → 処理 → 出力画面(または帳票)
前回は「入力画面」を中心に、テーブル設計を考えました。
前回までのテーブル設計でも、図書館の「貸出履歴」をシステム化するという、最低限の目的は達成できます。
しかし、データは蓄積するだけでは意味が無く、加工したり、集計することで、はじめて活きてきます。
そこで今回は、「処理」や「出力画面」も考慮して、テーブルの設計を見直してみましょう。
【1】例えば、貸出履歴のデータから、以下の帳票を出力したいとします。
・男女別貸出数
・著者ランキング
・出版社ランキング
・本の総額
そうなると、これまで無かったフィールド(列)も考える必要があります。
ポイントは、目的の出力を得るためには、どんなデータを、どう処理すれば実現できるか、考えることです。
【2】まず利用者側のテーブルを考えます。
男女別貸出数は、「性別」のフィールドを加えるだけで、集計できます。
・利用者
【3】次は書籍側のテーブルです。
著者ランキングは、「著者」フィールドがあれば可能です。出版社ランキングも「出版社」のフィールドがあればよいことになります。
また、書籍の購入にかかった費用として、本の総額を出したい場合は、「価格」のフィールドを用意しておけば問題ありません。
・書籍
【4】貸出履歴のテーブルは、前回と同じです。変更点は何もありません。
・貸出履歴
【5】フィールド数を増やしたことで、さらに詳細なデータを参照できるようになりました。
【6】複数のテーブルから、目的に合わせて、仮想テーブルを作成することもできます。
ここまで来ると、データをカウントすることが出来ます。
また、表示するフィールドは、自由に選択できるため、不要なフィールドは、表示しなければよいだけです。
このようなことが簡単にできることも、リレーショナルデータベースのメリットです。
【7】あとはクエリやSQLで集計すれば、目的の帳票を出力できます。
・男女別貸出数
・著者ランキング
・出版社ランキング
・本の総額
*貸出履歴のデータが少ないため、ランキングは同数になっていますが、データ数が増えれば、ちゃんと順位ごとに並べることができます。
また、クエリやSQLについては、ここでは説明を省きます。詳しくは以下の講座をご覧ください。
・Microsoft Access初心者入門講座
・Access SQL初心者入門講座
これでとりあえず集計できるようになりました。でもこの状態のテーブルでは、十分とは言えません。
既に気付いている人もいると思いますが、今回の変更で、「利用者」、「書籍」の両テーブルに、データが繰り返し入力されるフィールドができました。
したがって、さらにテーブルを正規化する必要があります。
正規化の続きは次回に解説しますが、自身のある人は、自分でも考えてみてください。どのようなテーブルを追加するとよいのでしょうか。