mysql:1979
From: (moeru) <<moeru@xxxxxxxxxx>>
Date: Tue, 09 May 2000 20:24:33 +0900
Subject: [mysql 01979] Re: AUTO_INCREMENT
2000/05/08 23:53:33 +0900にとみたまさひろ <tommy@xxxxxxxxxx>さんに頂いた 「[mysql 01978] Re: AUTO_INCREMENT」への返事です。 とみたさん、こんにちは(^^) >そんなことはありません。AUTO_INCREMENT は自動的に番号をつけてくれるとい >うだけです。 理解しました。便利ですね(^^) >> PRIMARY KEY (id,username) >だと、(1,"hoge"), (2, "fuga"), (3, "hoge"), (1, "fuga") というレコードが >作れてしまうと思うんですが、これは多分意図してないですよね? > >「id と usrename の組合せが一意である」じゃなくて「id と username それぞ >れ一意である」ようにしたいのなら、 質問して良かったです。。。大変なことになるところでした(^^; ぼくは、データベースでの「一意」という意味がよく分かってないみたいです(^^; 「一意」がPRIMARY KEY(id)などによって usersテーブル全体に意味を持たせることができるのか usersテーブルの中の各フィールドにのみなのかということです。 > PRIMARY KEY(id), UNIQUE (username) >とした方がいいと思います。 UNIQUE (username)なんてあるんですね。 CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT, username VARCHAR(20) NOT NULL, password VARCHAR(20), email VARCHAR(50) NOT NULL, PRIMARY KEY (id,username) INDEX (username) , INDEX (email) , ); つまり、このusersテーブルの中で、 UNIQUE (username)とすれば、この後登録されるであろうユーザー名に 同じ名前を使うことができないと理解すればいいでしょうか。 ぼくは、このことをPHPのプログラム側で解決しようと思っていたのですが これは、データベースの設計上そうしたほうがいいでしょうか。(実行速度的にとか。。) であれば、 CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT, username VARCHAR(20) NOT NULL, password VARCHAR(20), email VARCHAR(50) NOT NULL, PRIMARY KEY(id) UNIQUE (username,email) ); で INDEX (username) , INDEX (email) , はいらないってことですか? で usernameに今後同じ名前を許可しない。 emailに今後同じ名前を許可しない。 それと、うちの場合、詐欺防止に必死なんですが(^^; username-Aの人がemail-Aで登録されたとします。 その後 username-Aの人がusername-Bで登録して username-B email-A を許可したくない場合 UNIQUE (username,email) でいいでしょうか? アドバイスいただけたら幸いですm(__)m どうぞ宜しくお願いします。 モエル ぐるぐるオークション http://www.pileup.com/auction/ *新しいサイト(ぐるぐる)構築の為の仲間募集中です(^^)
1977 2000-05-08 23:37 [<moeru@xxxxxxxxxx> ] AUTO_INCREMENT 1978 2000-05-08 23:53 ┗[とみたまさひろ <tomm] -> 1979 2000-05-09 20:24 ┗[<moeru@xxxxxxxxxx> ] 1980 2000-05-09 21:07 ┗[とみたまさひろ <tomm] 1982 2000-05-09 21:39 ┗[<moeru@xxxxxxxxxx> ]