スポンサードリンク

システム開発 出力したい帳票から、テーブル設計を見直す。

システム開発 で、リレーショナルデータベースのテーブルを設計する時には、元々紙の帳票には無かった部分まで、考える必要があります。

通常、業務システムの流れは、以下のようになります。
入力画面 → 処理 → 出力画面(または帳票)

前回は「入力画面」を中心に、テーブル設計を考えました。

前回までのテーブル設計でも、図書館の「貸出履歴」をシステム化するという、最低限の目的は達成できます。

しかし、データは蓄積するだけでは意味が無く、加工したり、集計することで、はじめて活きてきます。

そこで今回は、「処理」や「出力画面」も考慮して、テーブルの設計を見直してみましょう。

【1】例えば、貸出履歴のデータから、以下の帳票を出力したいとします。
・男女別貸出数
・著者ランキング
・出版社ランキング
・本の総額

そうなると、これまで無かったフィールド(列)も考える必要があります。

ポイントは、目的の出力を得るためには、どんなデータを、どう処理すれば実現できるか、考えることです。


【2】まず利用者側のテーブルを考えます。

男女別貸出数は、「性別」のフィールドを加えるだけで、集計できます。

・利用者
system-21.gif


【3】次は書籍側のテーブルです。

著者ランキングは、「著者」フィールドがあれば可能です。出版社ランキングも「出版社」のフィールドがあればよいことになります。

また、書籍の購入にかかった費用として、本の総額を出したい場合は、「価格」のフィールドを用意しておけば問題ありません。

・書籍
system-22.gif


【4】貸出履歴のテーブルは、前回と同じです。変更点は何もありません。

・貸出履歴
system-14.gif


【5】フィールド数を増やしたことで、さらに詳細なデータを参照できるようになりました。

system-15.gif


【6】複数のテーブルから、目的に合わせて、仮想テーブルを作成することもできます。

system-33.gif

ここまで来ると、データをカウントすることが出来ます。

また、表示するフィールドは、自由に選択できるため、不要なフィールドは、表示しなければよいだけです。

このようなことが簡単にできることも、リレーショナルデータベースのメリットです。


【7】あとはクエリやSQLで集計すれば、目的の帳票を出力できます。

・男女別貸出数
system-29.gif

・著者ランキング
system-30.gif

・出版社ランキング
system-31.gif

・本の総額
system-32.gif

*貸出履歴のデータが少ないため、ランキングは同数になっていますが、データ数が増えれば、ちゃんと順位ごとに並べることができます。

また、クエリやSQLについては、ここでは説明を省きます。詳しくは以下の講座をご覧ください。
Microsoft Access初心者入門講座
Access SQL初心者入門講座


これでとりあえず集計できるようになりました。でもこの状態のテーブルでは、十分とは言えません。

既に気付いている人もいると思いますが、今回の変更で、「利用者」、「書籍」の両テーブルに、データが繰り返し入力されるフィールドができました。

したがって、さらにテーブルを正規化する必要があります。

正規化の続きは次回に解説しますが、自身のある人は、自分でも考えてみてください。どのようなテーブルを追加するとよいのでしょうか。

スポンサードリンク






システム開発実践講座 TOPへ