usersテーブルの構成カラムについて
MySQLバージョン4.1.16を使用しています。
このジャンルでお願いします。
よく全ての基本となるusersテーブル(IDとパスワードを入れるユーザの基本テーブル)
があると思うのですが、それを構成するカラムはどのような感じにするのが良いのでしょうか?
自分は、
CREATE TABLE `users` (
`user_id` varchar(16),
`password` varchar(255) default NULL,
`col1` varchar(255) NOT NULL,
`col2` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`),
) ENGINE=InnoDB;
このように代替キー(連番)を使わずにuser_idを主キー(unique)にして構成します。
理由としては、uniqueな列があるなら、わざわざ連番を割り当てる必要もないし、
他のテーブルがuser_idを外部キーとして持った時に、その表の外部キーの列が
数字であるよりも見やすいかなと思ったからです。
ただ一般的に出まわっているPHPフレームワークなどのテーブル構成ではusersテーブルというか
ほとんどのテーブルに連番を使っている例があります。
次のusersテーブルは、PHPフレームワークのCakePHPで使われるusersテーブルの構成の例で、
連番を使用しています。
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(255) collate utf8_unicode_ci default NULL,
`password` varchar(255) collate utf8_unicode_ci default NULL,
`group_id` int(11) NOT NULL,
`disabled` tinyint(1) NOT NULL,
`created` datetime default NULL,
`modified` datetime default NULL,
PRIMARY KEY (`id`),
KEY `group_id` (`group_id`),
KEY `disabled` (`disabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
使用状況によって、どちらが良い悪いというのは変わるのでしょうけど
基本的にusersテーブルというのはどのような構成にすべきなのでしょうか?
ちなみに自分は連番は○○_seqというカラム名にしてます(ただこれも
一般的には○○idを連番にしてるケースが多いので、どうすべきか迷っています・・・)
お礼
アドバイスありがとうございます。 >――だけのものだと、なんかアレな気がします。 ちょっと抽象的すぎたでしょうか(汗;) プライマリーキーと 同一フィールドを指す外部キーが2つしか書いてませんが、 実際にはもっとたくさんのフィールドがあると思います。 こうゆうテーブルが妥当だというお考えを聞いて 心強く思います。