ホームページ >データベース >mysql チュートリアル >リレーショナル データベース テーブルの主キーとして自動インクリメントを使用する必要がありますか?

リレーショナル データベース テーブルの主キーとして自動インクリメントを使用する必要がありますか?

DDD
DDDオリジナル
2025-01-06 07:39:40738ブラウズ

Should I Use Auto-Increments as Primary Keys in Relational Database Tables?

SQL: 2 つの異なる Auto_increments を使用したリレーショナル テーブルの作成

Auto_Increments とリレーショナル テーブルについて

真のリレーショナル テーブルでは、主キーとして宣言された列は自動的に自動インクリメントされる ID ではありません。

リレーショナル テーブルの主キーとして Auto_Increments を回避する理由:

  • 非一意:自動インクリメントされる ID は行を保証しません一意性。
  • 冗長性: 自動インクリメントされる ID は、何の目的も持たない追加データです。
  • 混乱を招く 期待: 処理自動インクリメントされる ID を主キーとして使用すると、行の一意性とデータについて誤った仮定が生じるintegrity.

Auto_Increments を使用しないリレーショナル テーブルの作成

  1. 複合主キーを定義します: 次で構成される主キーを作成します。それぞれの一意の識別子を構成する列row.
  2. 不要な ID フィールドの削除: 既存の ID フィールドが主キーとして宣言されている場合は、それを削除し、複合主キーを昇格します。
  3. 確認行の一意性: 重複を防ぐために、複合主キーの一意制約を宣言します。 rows.

リレーショナル テーブルの利点:

  • データの整合性のために行の一意性を強制します。
  • ベースの結合とクエリが容易になります。
  • によってパフォーマンスが向上します。データ アクセスを最適化します。

例:

次のリレーショナル テーブル構造を考えてみましょう:

CREATE TABLE user (
    user_name VARCHAR(30) NOT NULL,
    name_first VARCHAR(30) NOT NULL,
    name_last VARCHAR(30) NOT NULL,
    PRIMARY KEY (user_name, name_first, name_last)
);

この例では、主キーは 3 つの列で構成されており、各レコードが一意のユーザーを表すことが保証されます。自動インクリメントされる ID 列がないため、不必要なオーバーヘッドなしでテーブルの行の一意性が維持されます。

以上がリレーショナル データベース テーブルの主キーとして自動インクリメントを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。