- バイナリ
- utf8_bin
- utf8_unicode_ci
- utf8_general_ci
MySqlデータベースに一意の電子メールを保存するのに最適なのはどれですか?
注:その電子メールフィールドは、ユーザーのログインに使用されます。
MySqlデータベースに一意の電子メールを保存するのに最適なのはどれですか?
注:その電子メールフィールドは、ユーザーのログインに使用されます。
メールアドレスは文字です。したがって、バイナリを使用せず、テキストを使用してください。
Utf8は良い選択のようです。電子メール アドレスでサポートされている文字はわかりませんが、今後ますます多くの Unicode 文字が使用できるようになると予想できます。特に、データベースの他の場所で utf8 を使用している場合、あるエンコーディングから別のエンコーディングに切り替える必要はありません。すべてに utf8 を使用するだけです。
utf8_bin、 utf8_unicode_ci 、utf8_general_ciの選択に関しては、違いは照合のみです。これは、文字列を比較するときに違いが生じることを意味します。
ここで、許可されているものと通常のもののどちらかを選択する必要があります。通常、電子メール アドレスでは大文字と小文字が区別されませんが、大文字と小文字が区別される場合があります。
そのため、e-mail 列で一意のインデックスを使用し、メール アドレスの大文字と小文字のみが異なる場合は、 utf8_bin を使用する必要があります。これは、 _ciで終わる照合は「大文字と小文字を区別しない」ことを意味するためです。
一意のインデックスを使用していて、メールの大文字と小文字だけが異なるのを避けたい場合は、utf8_unicode_ciを使用してください。
そうは言っても、私はutf8_unicode_ciを使用しています。データベースが johndoe@email.com と JohnDoe@email.com を同じアドレスとして認識できるようにしたい。同じ文字で異なる大文字のアドレスを許可するよりもはるかに便利です。