1

テーブルの主キーとしてユーザー ID とユーザー名のどちらを使用する方がよいかについて、多くの議論を見てきました。userid を使用すると、必要に応じて後でユーザー名を柔軟に変更できます。セキュリティを実装する方法でもあります。ただし、ユーザー名も一意の識別子です。

ユーザー ID を主キーとして選択した場合、ユーザー名が一意の値になるように強制するにはどうすればよいですか?

ユーザー名を選択する場合、どのような問題に注意する必要がありますか?

4

5 に答える 5

2

このユーザーレコードを参照する他のテーブルが存在するUserIdため、として宣言します。これにより、制約を適用するのに役立ちます。PRIMARY KEYUserIdFOREIGN KEY

ユーザー名を一意にする必要がある場合は、それをNON NULL列として宣言し、UNIQUE KEY制約を定義します。このプロパティは、列の制約NON NULLによって許可される単一の null 値を防ぎます。UNIQUE KEYしたがって、UserName でのこの設定は、PRIMARY KEY.

于 2013-04-20T05:15:19.690 に答える
2

これは私自身の観点からです。

これは常に変更できないためUserID、データ型 int (または stringの場合もあります) をテーブルの主キーとして選択します。また、変更できないため、参照している一部の外部キーには問題はありません。

私が選ばなかった理由はUsername、これはユニークではありますが、ある時点で変更される可能性があるからです. それを参照している外部キーが既に存在する場合、そのユーザー名は、それらのキーまたはレコードが最初に削除または削除されるまで、まったく変更できません。

于 2013-04-20T05:16:00.650 に答える
0

意味的には、少なくとも私の耳には、useridは人為的に作成された値、おそらく人工的な主キーのように聞こえますが、usernameは自然でユーザーフレンドリーな (構成要素の) 自然な主キーのように聞こえます。どちらかの用語を逆の意味で使用すると、プログラマーとユーザーが混乱する可能性があり、将来的に微妙なバグが発生する可能性があります。

于 2013-04-20T05:15:44.737 に答える
0

ユーザー名に一意の値を強制する最良の方法は何ですか?

ユニークなインデックスを作成します。

ユーザー名を選択する場合、どのような問題に注意する必要がありますか?

ユーザーがいつでも自分のユーザー名を (一意である限り) 変更できるようにしますか? はいの場合は、生成したユーザー ID を使用します。それ以外の場合は、選択したユーザー名を使用してください。

于 2013-04-20T05:16:01.180 に答える
0

最初の質問については、UNIQUE制約は最新の RDBMS のほとんどで使用できます。アプリケーションレベルでも実装できます。

2 番目の質問については、明らかな問題は見当たりません。UserNames は、一般的にエンド ユーザーに知られています。ただし、多数のユーザーがいて、ユーザー名フィールドの最大長が大きい場合、インデックス作成は int 型のユーザー ID フィールドほど効率的ではない可能性があります。

于 2013-04-20T05:17:13.303 に答える