- 締切済み
顧客管理で困ってます
Access2000を使う初心者で、うまく質問できませんどうか読み取ってください。 自動車整備工場の顧客管理データベースを作ろうとしています。 一人の顧客が、複数台の自動車を所有している場合、テーブルの設計はどの様にするのがいいでしょうか? テーブルは、 顧客情報テーブル 作業履歴テーブル を用意すると思いますが、車輌情報テーブルはどの様にリレーションすればいいでしょうか? 最終目標は、顧客テーブルと作業記録テーブル・車輌テーブルをリレーションして、車両ごとの作業履歴と顧客ごとの売上管理をしたいのです。 どうかアドバイスをお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Siegrune
- ベストアンサー率35% (316/895)
>自動車整備工場の顧客管理データベース テーブル設計自体は、他の方の回答から考え方を読み取ってもらうといいと思いますけど、 普通は、この業種の顧客管理なら、「車検」というキーワードを重視します。 前回の車検はいつだったか?(車検の間隔は決まっているので次の車検の前に案内を出したい。) 前回の車検での修理は何をしていくらくらいかかったのか? また、 オイル交換は前回いつだったのか? パッテリーの交換は? タイヤ交換は? ・・・ 後者は、作業履歴テーブルで対応できなくないのですが、 前者は、別のテーブルを用意しておいたほうが管理しやすい。 とかいう業務系のノウハウは、パッケージソフトを購入したほうがお手軽に入手できるんですけどね。 よく考えないと作ったのはいいものの使いにくい・・・という結果になりかねないです。 (私もたずさわったことあるのがずいぶん昔なので、どんな要件があるのかはもう忘れましたけど。) 以上参考まで。
ひとつの作業というのは、ある特定の車両について行いますか? もしそうなら、作業履歴のところに、車両情報テーブルの主キーを書くフィールドを作って、そこにその車両の主キーを書いておきます。 一人の顧客が複数台の自動車を所有している場合、ということに触れておられますので、それについても書いておきます。 それは、車両テーブルに顧客情報テーブルの主キーを入力するフィールドを作っておくのです。 ひとつの車両に複数の顧客がいる、と言う場合は考えなくていいんですね? 例えば、同じ車両を奥さんが持ち込んだときと、旦那さんが持ち込んだときは、違う顧客として扱う、とか。 社用車が持ち込まれたとき、連絡をする相手は持ち込んだ担当者(何人かいる)である必要がある、とか。 リレーションにも触れておられますが、リレーションは作らない方がいいです。 確かに、関連するレコードを一気に削除できたりしますので便利と言えば便利なのですが、反面、"対応するレコードがない"というようなエラーがでてかえって使いにくくなったりします。もちろん、それはリレーションが悪いんじゃなくて、データベースの設計が悪いんですけどね。 リレーションシップの編集などせずに、クエリーで個別に決めたほうが作りやすいと思います。 例えばこんな風になります。ピリオドは空白のつもりです。このサイトじゃ、空白を全部消しちゃうんで、表現しにくいんですよねぇ。 顧客情報テーブル.......車両テーブル 顧客ID(主キー)---|......VIN(主キー) 名前...........................|---顧客ID 住所..................................車種 なんとか..........................かんとか かんとか..........................なんとか ま、見た感じはリレーションシップの編集画面と同じです。 このクエリーを実行すると、例えばこんな風になります。 顧客名....VIN 桂...............12341234 西園寺......23452345 西園寺......34563456 清浦..........45674567 以上で、質問と関連項目については書いたと思いますが、いかがでしょう。 "一人の顧客が複数台の自動車を所有している"ような場合が特に気になるのは、失礼ながら、エクセル風の帳票のイメージが抜け切っていないのです。 アクセスのようなリレーショナルデータベースは、データの整理の仕方が根本的に違います。あわてずに、じっくり研究してみてください。
お礼
とても分かりやすご説明をありがとうございます。 アドバイスを参考に、ひとまずテーブルを作ることが出来ました。 これから、実際のデータを入れて使い勝手を試しながら作り込んでみます。
- lupin-333333
- ベストアンサー率31% (294/933)
なぜ、そんな余裕があることができるのか謎ですが、自主学習と言う事ですか。 実務の方で、実際に組む方がいるのでしょうか? 整備会社って、そんなに儲かっていて、人手があまっていたっけ??? http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=%22%E8%87%AA%E5%8B%95%E8%BB%8A%E6%95%B4%E5%82%99%E5%B7%A5%E5%A0%B4%22+%22%E9%A1%A7%E5%AE%A2%E7%AE%A1%E7%90%86%22 これだけ市販されている、ソフトが存在します。それらを試したのでしょうか? 高くても50万円ぐらいです。15万円ぐらいからあり、カスタム内容により値段が上下します。会社なら、人件費かけるよりも、かなり安く実務に導入できると思いますが。 必要なのは、 工程管理表(作業表) だけですね。これと、帳票作成が付属すればいいだけと思います。 この作業表に顧客情報がリンクしていればいいだけですね。つまり整備会社向け、販売管理ソフトですよね。 一例ですが http://www.jocar.jp/function/index.html そこのソフト機能をみれば、実際に必要な管理項目がわかると思います。 本題です。 考え方は、顧客のデーターが主テーブルです。 http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E このようなスキーマの発想をすると、わかると思います。その端の右上に「データベースモデル」で「基本」と「その他」があり、どれが最も適するのかは、数をこなさないと、なかなか分かる物ではありません。 まず最も基本的な星型(スター)でやってみませんか? でまず、必要な管理項目を箱に書き、並べます。そして、関係を線で結び、その線に、演算子(=、<、!=, etc)などを書き込みます。 そうすると、なんと何の項目が、関係しあうのか、だれでもわかるようになり、頭がすっきりします。これで、整合性がとれた、線がかければ、それでなんと、DBのスキーマの設計は終わりです。 あとは実際の項目の名前をいれ、データー形を決めるだけです。 このできた物は、結局クエリーとしても使えるし、アクセスでそのまま移してテーブルをGUIで作るだけです。 話を戻すと、スター形だと、顧客が真ん中にきて、作業工程表、在庫、車種などが回りにきます。車種などはさらにツリー構造で、メーカー、部品でつながります。 そうすると、顧客DBには、作業工程表、在庫、車種のIDが入るわけですが、ここでもう一ひねりすると、車種に、作業表、在庫がツリーでぶら下がると思いませんか? そう、顧客DB=>車種別=>作業表=>在庫 となるはずなんですが・・・ 例えば、一世帯で管理するのか、一人、一人別にするかと言う問題もありますが、顧客が法人であるこも考えると、TOPはファイミリー名=世帯主=法人名=代表名と言うことになる。その下に、個別の個人名が入る感じになる。 と言うことで、まず、上記のページで、どのような関係図があるのか把握して、まず、管理項目をリストして、実際に関係の線を引く、それで試行錯誤してください。 上記の市販のソフトの機能項目が参考になると思います。あれはできる、これはできる、と言うのは、逆に言うと、アドバイザーやアナリスト、コンサルの意見を取り入れた、管理項目と言う事です。公開されているので、利用しましょう。
お礼
業務系のソフトを導入すればとのアドバイス、ありがとうございます。 以前からそうは思っているのですが、いま悲しいくらい作業が暇なもので、 今後のためにAccessの基本を身につけようと思っています。 遠回りになるかもしれませんが、知識は残ると信じています。
- hatena1989
- ベストアンサー率87% (378/433)
顧客情報(顧客ID、氏名、住所、電話番号・・・・) 車両情報(車両ID、顧客ID、車両番号、車種名、年式・・・・) 作業履歴(作業履歴ID、車両ID、作業日、作業内容、・・・・・) さらに作業の明細内容のテーブルもあった方がいいかもしれません。 作業明細(作業明細ID、作業履歴ID、作業明細内容、部品代、工賃・・・・・) それぞれ先頭のフィールドが主キー、同名フィールド同士でリレーション
お礼
とてもシンプルで判りやすいご説明です。 アドバイスを参考に3つのテーブルを組み立てることが出来ました。 これから使い勝手を調べてみます。
お礼
そうなんです、くるま屋は車検のフォローが命ですから、漏れないようにしておかないと。あとオイル交換なんかもある程度の予測のもとに、こちらからフォローできればいいなと思っています。結局のところ、ユーザーさんに寄り添いながら、忘れられないようにしないとってことですね。(汗)