アプリ版:「スタンプのみでお礼する」機能のリリースについて

MySQLバージョン4.1.16を使用しています。

基本となるユーザ情報を格納するテーブルで、
自動インクリメントされるidというカラムを使用する場合と、
使用しない場合とでは、どちらが良いというのはあるのでしょうか?
みなさんはどちらの形で利用しているのでしょうか?

[userinfoテーブル] id使用
id UNSIGNED AUTO_INCREMENT PRIMARY KEY
user_id VARCHAR(12) UNIQUE
password TINYTEXT

[userinfoテーブル] id使用しない
user_id VARCHAR(12) PRIMARY KEY
password TINYTEXT

A 回答 (1件)

user_id列は、どういう形式なのですか?



意味のない一意な通番を主キーにする方法は、サロゲート・キーと呼ばれます。

サロゲート・キーは、例えば次のような観点で、要否を判断します。

(1)行を一意に識別できる列の有無
(2)(1)の列のコード体系が変更される可能性
(3)関連する表数や行数
(4)「日時型」や「時間型」だけでは識別できない精度で、順序を示す値が必要か?

一意に識別でき、変更の可能性が殆どないようなキーを持つなら、サロゲート・キーをあえて持つ必要はありません。

>user_id VARCHAR(12) UNIQUE

大規模なシステムで性能を確保する場合、重複チェックのオーバーヘッドも無視できません。

>password TINYTEXT

性能を気にするなら、TEXT系の列は、事前に最大長が分からない場合にのみ使用しましょう。TEXT型の列値は、物理的に別のレコードとして格納されるため、I/O増になってしまいます。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
なるほど、一意になるキーがあるならあえて利用することはないということですね。
参考になりました。

お礼日時:2008/02/16 20:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!