関係モデル






[PR]



2006年12月13日(Wed)
関係モデル
 同業者の人などからたまに、次のような質問を受けます。

 「うちの顧客管理をするのに、最初年賀状ソフトなどを使って管理していたんだけどね。ただ、事務所通信の発行とか、いろいろやりたいことが出てきて、うちのスタッフの子にACCESS(データベースソフト)を買って、顧客管理のデータベースを作らせるようにしたんだよ。」「最初のうちは、色々やってたみたいなんだけど最近は、苦戦しているようで、、、ちょっと見てくれないかなあ?ぼくが見るところ結構出来はよさそうなんだけどね!!!」

「じゃあ、ちょっと拝見しましょうと、その作られた自社製顧客管理データベースを見ると」

 立ち上がったメニューを見てみると、デザインセンスよく出来ていて、「私の作るメニューより上出来じゃないか」というのが少なくありません。
ところが、内部の構造を見てみると、かなり適当に作られていて「こりゃ、いろいろやろうとすると苦戦するだろうな」と思わせるようなつくりになっています。

例えば、データの枠組み(テーブル)が次のようになっていたりします。
(顧客テーブル)顧客番号、顧客名、代表者名、住所、電話番号

まあ、住所と電話番号などを検索参照する程度ならコレでもいいのですが、事務所通信発行の管理をするためこんな風に付け加えています。
(顧客テーブル)顧客番号、顧客名、代表者名、住所、電話番号、1月、2月・・・・12月

「どうやってつかってるの?」と聞くと
「1月分の事務所通信を送ったら1月のところに発送済みと書いておくんです。2月分の発送に時期になったら1月発送済み分の宛名ラベルを発行して用意しておきます」
「何に困っているの?」
「所長がこれをつかって、事務所通信の請求書の発行などもできないか?ていってるんです。ただ、請求書の発行となったら、宛名ラベルだけじゃなく、いろいろ計算集計しないといけないし、値段も月ごとに変更があるし、全然判らなくて」

 データーベースを使うときには、一つのテーブルで何もかもやろうとするとこのような状態に陥りがちです。
こうしたシステムを作るときには、まず、どのようなことをやろうとしていて、どの様な実態(エンティティ)が存在するか?それらがどのような関係にあるか?をまず分析しなければいけません。その上で、実態に応じたテーブルと関係(リレーション)を作っておかないといけません(関係モデルの構築)。

上のケースのような場合
まず、実態としては(顧客)(事務所通信)(注文)の3つが存在すると考えられます。

そしてその関係は
一人の顧客にとって、1月分の注文、2月分の注文など複数が考えられます。
よって(顧客)1−多(注文)の関係になります。
また、事務所通信にとってもAさんの注文、Bさんの注文など複数考えられます
よって(事務所通信)1−多(注文)の関係になります。
まとめると(顧客)1−多(注文)多−1(事務所通信)

となるとテーブルの作り方は、次のようなものになります。。
(顧客テーブル)顧客番号、顧客名、代表者名、住所、電話番号
(事務所通信テーブル)発行年月日、タイトル、金額
(注文テーブル)発行年月日、顧客番号、発送処理

(以下請求管理のための仕組みなどは省略)

かなり単純化していますが、こうしておかないと、このシステムに対する複雑な事後の要求が出るたびに、苦しい状況になってしまいます。



※アクセスなど低価格データベースソフトが日本で販売された当初は、プロでもこんなつくりの巨大ワンテーブルのデーターベースをつくってニッチモサッチモいかなくなった事例をいくつか見ています。(たぶん、システムを発注した会社が最初に全体像を提示せず、事後になって色々変更を出してしまったか、開発会社の事前情報整理やデータベース関連の基本技術が足りなかったか、アクセス自体のバグや当時のPCの非力さを強引に回避したツケのいずれかでしょう。)


writebacks(0)
トラックバック(trackback)
URL:

コメント(comment)
名前(*):
URL/Email: (optional)
タイトル(*):
コメント内容(*):
画像認証(*): 表示された画像の文字を入力してください:

名前と URL/Email をcookieで保存


小野公認会計士税理士事務所バナー


お勧めサイト
(リンク集)


小野会計ショップ



新着トラックバック/コメント


カレンダ
2006年12月
         
13
           

アーカイブ
2006年 (337)
1月 (28)
2月 (18)
3月 (21)
4月 (25)
5月 (30)
6月 (30)
7月 (31)
8月 (31)
9月 (30)
10月 (31)
11月 (30)
12月 (32)
2007年 (352)
1月 (31)
2月 (28)
3月 (31)
4月 (30)
5月 (31)
6月 (29)
7月 (31)
8月 (31)
9月 (30)
10月 (31)
11月 (28)
12月 (21)
2008年 (70)
1月 (9)
2月 (7)
3月 (4)
4月 (5)
5月 (4)
6月 (5)
7月 (7)
8月 (7)
9月 (8)
10月 (6)
11月 (4)
12月 (4)
2009年 (23)
1月 (5)
2月 (2)
3月 (2)
4月 (4)
5月 (2)
6月 (1)
7月 (2)
8月 (1)
9月 (2)
10月 (1)
11月 (1)
2010年 (7)
1月 (2)
2月 (1)
3月 (2)
6月 (1)
7月 (1)

アクセスカウンタ
今日:1,097
昨日:314
累計:2,154,071