27

友人から次のように言われました。

どの固有キーを使用しますか? ユーザー名全体を保存していないことを願っています --- これはテーブルスペースを使いすぎます! 各 (一意の) userNAME に一意の userID を割り当て、この userID を保存します (INTEGER UNSIGNED auto_increment または BIGINT UNSIGNED auto_increment である必要があります)。参照を作成することを忘れないでください

FOREIGN KEY ( userID) REFERENCES usertable( userID) は、userID を使用してすべてのテーブルで使用されます。

上記のステートメントは正しいですか?なぜですか、そうでないのですか?

4

2 に答える 2

56

主キーは変更できませんが、変更できるため、彼は(間違った理由で)正しいと思いますusernameuserid変わらないのでそのまま使ってください。

于 2009-12-01T11:37:52.197 に答える
21

彼は間違った理由で正しい. テーブル スペースは、アプリが後でユーザー名を変更したり、一意でなくなることさえ要求する可能性があるという事実 (スタック オーバーフローのように、一意のユーザー名を必要としないアプリケーションを想像することができます) の二次的なものであり、したがって、アプリには大幅なリファクタリングともう一方 (整数 PK) の場合の軽い変更ではなく、データの移行。

于 2009-12-01T11:43:10.167 に答える