ホームページ > データベース > mysql チュートリアル > 非主キー列に対して外部キーを使用する必要があるのはどのような場合ですか?

非主キー列に対して外部キーを使用する必要があるのはどのような場合ですか?

Patricia Arquette
リリース: 2025-01-15 10:56:44
オリジナル
202 人が閲覧しました

When Should You Use a Foreign Key to a Non-Primary Key Column?

外部キー制約と非主キー列

リレーショナル データベースは、外部キー制約を利用してテーブル間の参照整合性を維持します。 通常、外部キーは主キーを参照しますが、非主キー列の参照が必要な場合もあります。

シナリオイラスト

2 つのテーブル、table1table2 を調べてみましょう:

<code class="language-sql">CREATE TABLE table1 (
   ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
   AnotherID INT NOT NULL,
   SomeData VARCHAR(100) NOT NULL
);

CREATE TABLE table2 (
   ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
   AnotherID INT NOT NULL,
   MoreData VARCHAR(30) NOT NULL,

   CONSTRAINT fk_table2_table1 FOREIGN KEY (AnotherID) REFERENCES table1 (AnotherID)
);</code>
ログイン後にコピー

ここでは、table2 の主キーではない table1 列を使用して、AnotherIDtable1 の間に外部キー関係が必要です。

非主キーへの外部キーの確立

それほど頻繁ではありませんが、主キー以外の列を参照する外部キーを作成することは可能です。 ただし、非主キー列には一意制約を適用する必要があります:

<code class="language-sql">ALTER TABLE table1 ADD CONSTRAINT UQ_AnotherID UNIQUE (AnotherID);</code>
ログイン後にコピー

この一意の制約により、AnotherID 内の table1 値の一意性が保証され、外部キー ターゲットとしての使用が可能になります。

推奨される代替手段

理想的には、参照整合性を強化するために、外部キーは主キーを参照する必要があります。 可能であれば、table1ID 列を table2 の外部キー ターゲットとして利用するようにデータベース スキーマを再設計します。これにより、主キー以外の列の一意制約を管理する必要がなくなります。

以上が非主キー列に対して外部キーを使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート