http://www.st.rim.or.jp/~k-kazuma/SD/SD903.html
将来の拡張や使い勝手を考慮したコード設計
かなり長文ですが「将来の拡張や使い勝手を考慮したコード設計」を一読下さい。
http://www.st.rim.or.jp/~k-kazuma/index.html
川村渇真の「知性の泉」
上記も含めて、多くのコンテンツがある『川村渇真の「知性の泉」』はお勧めです。
http://www.hatena.ne.jp/1128064393
人力検索はてな - お客さまに顧客番号を割り振りたいと思うのですが、将来の拡張性なども考えてルールに則ってつけていきたいと思います。「こんなルールや方法でつけたらどうか?」など、経..
顧客番号そのものに意味を持たせるのは得策ではありません.顧客番号はあくまでも顧客を識別できる番号にします.
そのため,顧客の将来の増大に対しても十分間に合う桁数にします.一番上位の桁を1にした番号から順番に顧客番号をふります.10万人なら,1000000から番号をふります.顧客の特性はデータとして持ちます.
検索は,顧客番号の他,電話番号,そのほかの属性にします.
顧客IDに番号の桁に意味を持たせる設計方法もありますが,柔軟性にかけるため進められません.特にパソコン等で管理することになりますので顧客IDは重複しない方法に決めます.
ありがとうございます!
http://www.st.rim.or.jp/~k-kazuma/SD/SD902.html
理想的なフィールド定義を作るデータ分析
1) 顧客コードは、連番に!
2) 顧客コードの数値(頭文字)に意味を持たせない
3) 業務用・分析用には、別フィールドで
区分を割り当て管理する
ってことを、前任者がやっていたらなあ。。
がんばってください。
ありがとうございます!
やっぱりはてなで聞いていてよかったです!
Yahoo!
私の知り合いが居酒屋を営んでおり、ちょっとやってみたいということでチャレンジした経験談ですが・・・
その1・顧客の人数は何人くらいを見込んでいるか?
この店は小さな店だったので数桁で間に合いましたが、店の規模によって桁数が増えるのは確実です。でも実際、6ケタに設定して、10万人クラスの顧客を抱える店って・・・ないですよね。
その2・表示内容はシンプルなほうがいい
あまり複雑なIDにすると、見たほうもいぶかしがりますし、できるだけ短い電話番号レベルになるほうがいいです。覚えきれないですし。
また、IDも頭文字が性別で、後はナンバーになるくらいがいいと思います。
いろいろ顧客情報をIDに含ませようとすると・・・お客さんの状態が変わるたびにIDも変わるので、非常に管理しづらくなりました。
その居酒屋では顧客の実際の数は2桁だったのですが、最終的に
性別1文字+4桁になりました。
M0001のような感じです。
業態や使い方次第でもう少し詳しいIDに設定してもいいですね。
ありがとうございます!
今まで拝見したなかでは、2種類あるようですね。
顧客番号に意味を持たせないという考え方と意味を持たせるという考え方・・・。
悩みますね・・。
ともあれ、ありがとうございます!
http://www.hatena.ne.jp/1128064393#
人力検索はてな - お客さまに顧客番号を割り振りたいと思うのですが、将来の拡張性なども考えてルールに則ってつけていきたいと思います。「こんなルールや方法でつけたらどうか?」など、経..
私の以前働いていた会社では、最初の3桁が数字で購入コース、後ろ10桁が、9桁の数字+アルファベットでした。
(例えば、001-123456789A)
9桁の数字は、単純に入会順番で、最後のアルファベットは、9桁の数字をある計算式にあてはめたものでした。これによって、適当な会員番号をはじくようになっていました。(例えば、(1桁目x1+2桁目x2+・・・9桁目x9)÷26の余りが1だったら、アルファベットの最初のAのような感じです。)
わかりづらいでしょうか?
いえ、ありがとうございます!
いろいろな方法があるということがわかりました^^
ありがとうございました!
連番がいいと思います。
しかしインターネットなどで顧客に顧客番号を入力してもらうことをお考えでしたら、間違えた入力のチェックなどができるほうがいいです。
そのため、連番を8桁+XORを2桁の計10桁の番号のようにするといいと思います。
aaaaaaaaxx(aが連番の数字0~9、xがxorの数字0~9)
XORというのはチェックサム用によく用いられる計算方法です。Windows標準の電卓の関数電卓モードにもありますし、プログラムからですとすぐに計算可能です。
xorは16進数で00~FF、10進数で0~255の数値になりますが、顧客番号にするときには10進数で下2桁を取って連番の後に結合させます。
aaaaaaxxaa(aが連番、xがxor)
というように桁の途中に入れてもいいと思います。
C言語であれば以下のような感じで計算できます(チェックはしていないのでこのままでは動かないかもしれません)。
int i;
int nXor;
int nNo;
char pszNo[11];
nNo = 100; //顧客ごとの連番
sprintf(pszNo,”%08d”,nNo);
nXor = 0;
for(i = 0; i < 8; i++)
nXor = nXor ^ pszNo[i];
sprintf(&(pszNo[8],”%02d”,nXor % 100);
printf(”顧客番号は%s”,pszNo);
ありがとうございます!
丁寧に教えて下さり大感謝です!
おそれいります。
ありがとうございます!
大変参考になります!