[解決済み】すべてのテーブルに主キーを持たせるべきですか?
2022-03-25 17:15:22
質問
データベースのテーブルを作成しているのですが、論理的な主キーが割り当てられていません。各テーブルに主キーを設定する必要がありますか?
どのように解決するのですか?
簡単な答え はい .
長い回答です。
- テーブルが何かに結合可能である必要があります。
- テーブルをクラスタ化する場合、何らかの主キーが必要です。
- もし、あなたのテーブルの設計に主キーが必要ないのであれば、設計を再考してください。なぜ同一のレコードを保持するのでしょうか?
MySQLでは、InnoDBストレージエンジンは、明示的に指定しなかった場合、常にプライマリーキーを作成するため、アクセスできない余分なカラムができる。
主キーは複合キーにすることができることに注意してください。
多対多のリンクテーブルがある場合、リンクに関係するすべてのフィールドに主キーを作成します。こうすることで、1つのリンクを記述するレコードが2つ以上存在しないようにすることができます。
論理的な一貫性の問題だけでなく、ほとんどの RDBMS エンジンは、これらのフィールドを一意インデックスに含めることで利益を得ることができます。
また、どんな主キーでも一意なインデックスを作成することになるので、それを宣言して論理的整合性とパフォーマンスの両方を手に入れるべきです。
なぜ常にユニークなデータにユニークなインデックスを作成する必要があるかについては、私のブログのこちらの記事を参照してください。
追伸 があります。 とても、とても 主キーが不要な特殊なケース。
ほとんどの場合、ログ・テーブルが含まれ、そのテーブルには 任意の インデックスを作成します。
関連
-
[解決済み] この2つの関係は、ユニオンのオペレーションにとって互換性があるのでしょうか?
-
[解決済み] 多くのSQLiteデータベースをマージするにはどうすればよいですか?
-
[解決済み] どのようにneo4jデータベースをリセット/クリア/削除するには?
-
[解決済み] SGBDとはどういう意味ですか?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み] GUIDを主キーとして使用する場合のベストプラクティス、特にパフォーマンスに関して教えてください。[クローズド]。
-
[解決済み】マルチインデックスとマルチカラムインデックスの比較
-
[解決済み】プライマリーキーとユニークキーの違いについて
-
[解決済み】MySQLで主キーを削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別関係と非識別関係の違いとは?
-
[解決済み] Liquibase ロック - 理由は?
-
[解決済み] 検出された解決済みの移動がフライウェイのデータベースに適用されていない。
-
[解決済み] Max CardinalityとMin Cardinalityの違いは何ですか?
-
[解決済み] バルクロードとは何ですか?
-
[解決済み] スキーマとテーブルとデータベースの違いは何ですか?
-
[解決済み】すべてのテーブルに主キーを持たせるべきですか?
-
[解決済み】データベースの結合はいつ、なぜ高くつくのですか?
-
[解決済み】データベースで継承を表現するには?
-
[解決済み】ドッカー化したPostgreSQLデータベースのバックアップ/リストア