2006年7月20日

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

片寄と申します。

info2 wrote:
> 一般的な考え方を教えてください。
>
> 商品のデータベースにおいて、Auto incrementで商品IDを作るのは基本
> 中の基本のようですが(あらゆる本にそう書いてある)、たとえば商品コ
> ードの生成を10001からはじめた場合、商品アイテムの入れ替えが多い

> と数年で99999に達します。
> すると、その商品マスターを作った日付などから、現在使っていない
> 10001や10002などの古い商品レコードを抽出し破棄するなどして、それ
> らの商品コードを新たな商品にふればいいのでしょうけれども、
> 1. auto incrementでは10001、10002などの数字は得られない。
> 2. 空いているコードは、たぶん飛び飛びである。

基本ではないと思います。むしろ邪道に近いと思います。
弊害が多い。(鈴木さんも述べているように)
私なら、商品IDはauto_incrementではなく別に定義します。

MySQLのマニュアル
http://dev.mysql.com/doc/refman/4.1/ja/example-auto-increment.html


> 1. auto incrementでは10001、10002などの数字は得られない。

特定の値からシーケンスを開始する方法はあります。
テーブル定義するとき、最後に "AUTO_INCREMENT=10000"を付け加えると
10000から開始します。

変更することもできます。
ALTER TABLE t AUTO_INCREMENT=10000;

> データベースを何年も運用する中で、商品コードの空番号はどうやって
> 確保するのでしょうか??

 ・削除する場合、レコードを削除しないで削除マークを付ける。
 ・再利用商品IDは、削除マークレコードから選ぶ
の方法ではいかがですか。


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




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