1

新しいデータベースを作成していて、一時データを含むテーブルがいくつかあります。

例: ユーザーによるパスワードの変更要求 - トークンが保存され、後で削除されます。

現在、これらのテーブルには主キーがあり、1 から上に自動インクリメントされます。

AUTO_INCREMENT = 1;

この主キーの用途はまったくありません...参照することはなく、大きくなるだけです。

このようなテーブルには主キーが必要ですか?

4

1 に答える 1

0

簡単な答え: はい。

長い答え:

テーブルを何かに結合できるようにする必要があります テーブルをクラスター化する場合は、何らかの主キーが必要です。テーブルの設計に主キーが必要ない場合は、設計を再考してください。ほとんどの場合、何かが不足しています。同一の記録を保持するのはなぜですか? MySQL では、明示的に指定していない場合、InnoDB ストレージ エンジンは常に PRIMARY KEY を作成するため、アクセスできない余分な列が作成されます。

PRIMARY KEY は複合キーにすることができることに注意してください。

多対多のリンク テーブルがある場合は、リンクに含まれるすべてのフィールドに PRIMARY KEY を作成します。したがって、1 つのリンクを記述する 2 つ以上のレコードがないようにします。

論理的な一貫性の問題に加えて、ほとんどの RDBMS エンジンは、これらのフィールドを UNIQUE インデックスに含めることで恩恵を受けます。

また、PRIMARY KEY には UNIQUE インデックスの作成が含まれるため、それを宣言して、論理的な一貫性とパフォーマンスの両方を得る必要があります。

これは、すでに同じ議論があるSOスレッドです

一部の人々はまだあなたの意見に従うのが好きです. こちらをご覧ください

私の個人的な意見では、行を識別または一意にするために、主キーが必要です。ロジックは、プログラム ロジックにすることができます。自動インクリメントまたは複合、または何でもかまいません。

于 2013-07-23T05:28:46.020 に答える