2006年7月20日

[mysql 13168] Re: 商品コードについて

普通の業務システムというか業務で商品コードがauto_incrementに依存するわ
けがない。
数値でも文字列でもその列に入れられる"上限"を決めるのはその列の「型」で
あってauto_incrementではない
→それではここで問題です。id varchar(10)の取り得る最大値は?

「基本中の基本」かぁ、、、、、とんでも本にひっかかってるんだなぁ。
てか、そんな本あるのか? わしの持っとる本にはそんなことは全く書いてない

ぞ。
そんな本は害毒にしかならないから書名を晒した方がよいのではなかろうか。

・各表にprimary keyを必ず作り、auto_incrementにしておくのはまぁわりとふ
つー
・そのprimary keyに意味を持たせる必要はない(持たせてもいいけど危険)
・そのprimary keyをエンドユーザが使う必要はない(使わせてもいいけど危険)
(おまけ)primary keyやunique keyは一意制約がかかる=重複がなくなる。

たとえば商品マスタと在庫やら売上やらをひもつけるとして、商品コードでひ
もつけるか商品マスタのprimary keyでひもつけるか。
わしが作るなら、エンドユーザの業務安定性が信用できない場合はprimary key
でひもつける。突然商品マスタを大改造しようとしたり、数ヶ月間違った商品
コードで運用したあげくに「間違ってたから過去にさかのぼって直したい」と
いってきたり。ふざけるなと。期をまたいでいたり税務調査が入ったりしたら
どうするんだと。
一貫性安定性がありそうだったら商品コードでひもつける。

--- info2 wrote:

> 一般的な考え方を教えてください。
>
> 商品のデータベースにおいて、Auto incrementで商品IDを作るのは基本
> 中の基本のようですが(あらゆる本にそう書いてある)、たとえば商品コ
> ードの生成を10001からはじめた場合、商品アイテムの入れ替えが多い
> と数年で99999に達します。
>
> すると、その商品マスターを作った日付などから、現在使っていない
> 10001や10002などの古い商品レコードを抽出し破棄するなどして、それ
> らの商品コードを新たな商品にふればいいのでしょうけれども、
>
> 1. auto incrementでは10001、10002などの数字は得られない。
> 2. 空いているコードは、たぶん飛び飛びである。
>
> などの問題が生じると思います。
> データベースを何年も運用する中で、商品コードの空番号はどうやって
> 確保するのでしょうか??
>
> 鈴木健
>


--------------------------------------
Let's start Yahoo! Auction - Free Campaign Now!
http://pr.mail.yahoo.co.jp/auction/

投稿者 xml-rpc : 2006年7月20日 09:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39745
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。