2

Twitterのユーザー名、メールアドレス、その他のフィールドを一意にするために保存する必要がある場合があります。ただし、Twitterのユーザー名は後でしか設定できません。登録プロセスではありません。これをSQLでどのように処理できますか?

これが私の現在のSQL構造です:

CREATE TABLE `kios_users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `username` varchar(32) NOT NULL,
 `password` varchar(60) NOT NULL,
 `email` varchar(100) NOT NULL,
 `no_hp` varchar(15) NOT NULL,
 `twitter_oauth_token` varchar(60) NOT NULL,
 `twitter_oauth_token_secret` varchar(60) NOT NULL,
 `twitter_username` varchar(32) NULL,
 `verify_level` enum('just_reg','hp_ok','all_ok') NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `email` (`email`),
 UNIQUE KEY `no_hp` (`no_hp`),
 UNIQUE KEY `username` (`username`),
 UNIQUE KEY `twitter_username` (`twitter_username`)
) ENGINE=MyISAM

このような構造では、twitter_username空に設定することはできません。最高のテーブル構造を提案してもらえますか?

4

3 に答える 3

4

ダミーの一意の値を設定することもできますが、これは最善ではありません。最高ではなく、アプリロジックで一意性を管理できます。id2つのフィールドしかない別のテーブルを使用するのが最善だと思います。twitter_username一意のキーをオンにしtwitter_usernameて、Twitterのユーザー名がある場合にのみ挿入します。idまた、両方の列に1対1の関係があるはずです。

于 2010-10-19T04:12:52.513 に答える
2

twitter_usernameを「NOTNULL」に設定しました。試す

`twitter_username` varchar(32) NULL
于 2010-10-19T04:10:39.647 に答える
0

TwitterパラメータにNULLを許可し、アプリケーションレベルで一意性を強制することはできませんか?(つまり、php / .net /使用しているものは何でも)

または、Twitterアカウントの詳細を、ユーザーIDにリンクされた別のテーブルに保存します

于 2010-10-19T04:07:48.453 に答える