前回、困ったExcelの請求管理をデータベースソフトでアプリに置き換えてみました。
こんにちは! 松田軽太です。
今回は「何をどう考えればデータベースソフトでアプリを作れるのか」を解説したいと思います。
Excelでどう管理しているかを整理する
まずは今、Excelでどう管理していて、どこがどう不便なのかを整理します。
ここで問題点を整理していくうちに「あれ?今のExcelのこの部分を改善すれば、そのまま使ってもいいんじゃね?」と気がつくかもしれません。
特に不便でなければ、わざわざデータベースソフトで作り直す必要もありません。
では今回も前回と同じExcel請求管理を題材にします。
まずExcelシートは二種類ありますね。
・請求データ入力兼請求書
・請求データ一覧表
請求データ入力兼請求書
請求データ入力兼請求書で面倒なのは、金額や数量は自動計算しますが、それ以外は全て手入力です。
発注先一覧や商品一覧は別のExcelファイルで管理していて、都度、コピペしています。
まぁ、Excelでの運用ではよくあることです。
また印刷用の請求書も兼用しているので、入力に注力できる画面構成になっていません。
請求データ一覧表
この運用でメンドウクサイのは、この請求データ一覧表でしょう。
請求データは経由する商社単位に集計します。
そのために商社ごとにExcelファイルを分ける必要があります。
ということは経由する商社が増えるたびにExcelファイルが増えていきます。
また入力用の請求書は1シート内に15枚までの設計になっています。
ということは15枚を越えると、Excelファイルが増えることになります。
設計管理しているフォルダ名に年月日をつけて管理しているのでしょう。
項目を洗い出す
では請求データ入力兼請求書の項目を整理してみましょう。
・請求番号
・発注日
・出荷日
・商社ルート名
・発注先
・商品コード
・商品名
・ロット番号
・個数
・単位
・数量
・単価
・金額
この中で注意すべき点は一枚の請求書の中で一回しか入力しない項目と、何回か入力する項目があるという部分です。
このように一回しか入力しない項目を「請求ヘッダー部」とします。
商品名のように複数行を入力する項目を「請求明細部」とします。
マスタ化して管理した方が良い項目はあるか?
この請求書の中で発注先は別のExcelで管理していて、複数の発注先の中から選びます。 商品も同様ですね。お客さんからの発注は商品が一つだけということはありませんよね。
ということで発注先マスタと商品マスタというテーブルも作成しましょう。
このように決まっているデータがある場合はマスタ化して独立した管理を行った方が良いでしょう。
ではここで一旦、整理してみると
■請求ヘッダー部
・請求番号
・発注日
・出荷日
・商社ルート名
・発注先
■請求明細部
・商品コード
・商品名
・ロット番号
・個数
・単位
・数量
・単価
・金額
■発注先マスタ
・発注先名
・商社ルート名
・住所
・電話番号
■商品マスタ
・商品コード
・商品名
・個数
・単位
・単価
ここで分けたデータの仲間をデータベースソフトではテーブルという単位で管理します。
次にデータの関連性を考えてみます。
請求データ入力の時、何が自動計算されると便利なのか考えてみます。
リレーションを考える
どのテーブルのどの項目を結び付けると便利になるのかを考えてみます。
データベース設計の世界ではこの関連性を表すためにER図という図を書きます。
名前はともかくとしてテーブルの関連性を分かりやすく整理するための図です。
まず請求ヘッダー部ですが、項目を見ていると発注先マスタと関連付けできそうですね。
次に請求明細部ですが、商品マスタと関連付けできそうです。
しかし、何か足りなく感じませんか?
請求ヘッダー部と請求明細部も関連付けを行います。
請求データは一つのテーブルではダメなのか?
もしかしたら「わざわざ請求データをヘッダー部と明に分けなくても、一つのテーブルにまとめた方が分かりやすくなるんじゃないか?」と思うかもしれませんね。
もし、ひとまとめにすると、こんな感じですね。
このテーブルにデータを入力するとどうなるでしょうか?
最大で9行分なので明細部の項目を9回繰り返すことになり、 すごく項目数が多くなります。
しかし、実際に10行全部入力することは少ないのではないでしょうか?
となると空きの項目ばかりが増えてしまいます。
また請求金額の計算もメンドウクサイことになります。
またデータベースにデータが蓄積されると、CSVデータとして出力して、分析したりすることもあります。
その場合、明細項目が横長につながっていると、Excelのピポットデーブルも使えないので、取り回しがしにくくなります。
ということで、データベースを作ったあとの使い勝手もあらかじめ考えて設計しておくと良いでしょう。
まとめ
このように整理すると、データベースを設計することができます。
では、今までの作業をまとめていきます。
- Excelで何を管理しているのか明確にする
- Excelの項目を洗い出す
- Excelをテーブルに置き換える
- テーブルの関連付けを考える
この部分が不明瞭なまま作り出すと、あとあと使っていくうちに「やっぱり、ここはこうしておくべきだったな~」と色々と後悔することになります。
とはいえ失敗という経験で人は成長するので、必要以上に失敗を怖れる必要はありませんが、Excelであれデータベースソフトであれ、実務で使い始めるとデータが蓄積してしまうので、作り直すのも大変です。
たとえばブログの運営でも「取り敢えず作る」と、あとから構成を変更するのは大変ですよね?
データベースソフトもそれと同じです。
なのであとになって余計な手間をかけないためにも、設計段階でよく考えておくことが大切です。
実際にデータベースソフトで完成させたアプリの動きは下記のブログ記事をご覧ください。
データベース設計に興味をもたれた方は、こちらの本を読んでみることをオススメします。
僕もこの本を読んでデータベースの作り方を学習しました。
ちなみに簡単に使えるデータベースソフトをお探しでしたら、こちらをどうぞ。
なんとなく使うとなんとなく動くというユルい系データベースです。