2008年6月27日金曜日

Visual Basic 2005でデータベースをやってみる(2)

失敗したかも。
データベースアプリとはいえ、ポーダブルなら
Accessの方がいいのではないか? と思い出したのです。
しかし、Accessは本でもよく載ってるしつまらないし、
実務でも使うと思うので やっぱりSQL Serverでいこうと思います。


で、まずはデータベースから用意しなければなりません。
真面目な設計ではないのであまり深くは考えてませんのでご注意を。
(というか設計は勉強不足で…)

基本的なスタンスはとしては単純で、
  • 年度テーブルで作成済み年度を管理
  • 収入と支出でテーブルを分ける
  • それぞれに内訳区分を設ける
  • 内訳区分自体もデータベースに保持させる
  • 収入には振込者と振込手数料を記憶させる
  • 支出には立替者と精算済みかどうかも記憶させる

という感じです。
内訳区分は決算集計に使用します。
また、それは変更の機会も少ないだろうということから
データベースに持たせることにます。
(いや、以前はこの手の情報をプログラムで保持してたから
今回はデータベースで…ってだけなんですが。)

とりあえずいい加減な感じで作るとこうなりました。
次回はとりあえずプログラムに入りたいです。
が、どこから作るのがよいんでしょうか。
考えておきます。はい。

  1. year(年度)テーブル
    ・year:年度、PK
    ・start_date:年度開始日(使うか未定)
    ・end_date:年度終了日(同上)
  2. income(収入)テーブル
    ・income_id:収入ID、PK
    ・year:年度、NN
    ・date:日付、NN
    ・section_id:収入内訳区分1、NN
    ・subsection_id:収入内訳区分2
    ・detail:内訳詳細
    ・amount:金額、NN
    ・payer:振込者、NN
    ・fee:手数料、NN
  3. outcome(支出)テーブル
    ・outcome_id:支出ID、PK
    ・year:年度、NN
    ・date:日付、NN
    ・section_id:支出内訳区分1、NN
    ・subsection_id:支出内訳区分2
    ・detail:内訳詳細
    ・amount:金額、NN
    ・payer:立替者、NN
    ・adjust:精算済
  4. income_section(収入内訳区分1)テーブル
    ・section_id:収入内訳区分(1)ID
    ・name:収入内訳区分(1)名
  5. income_subsection(収入内訳区分2)テーブル
    ・subsection_id:収入内訳区分(2)ID
    ・parent_id:親収入内訳区分ID
    ・name:収入内訳区分(1)名
  6. outcome_section(支出内訳区分1)テーブル
    (income_sectionテーブルと同じなので省略)
  7. outcome_subsection(支出内訳区分2)テーブル
    (income_subsectionテーブルと同じなので省略)

PKは主キーを、NNはNULL制約(Not NULLの意)を表しています。
年度テーブルの開始日と終了日は使わないような気もするので微妙です。
というか機能面が固まっていないので
このテーブルは 変更される可能性大です。
変更する場合はその都度修正していくことにします。
いい加減だなぁ。

内訳区分は2つ設けました。
1つ目(親)が決算用の項目に対応させるために使用し、
2つ目(子)が管理しやすいような分け方をするために使おうと思います。
どの区分が親であるかを持たせ、
入力の際に指定可能項目を切り替えたいなと思っております。

はい、次回は実際にデータベースを作成していきます。

0 コメント: