Heim > Datenbank > MySQL-Tutorial > Wann sollten Sie einen Fremdschlüssel für eine Nicht-Primärschlüsselspalte verwenden?

Wann sollten Sie einen Fremdschlüssel für eine Nicht-Primärschlüsselspalte verwenden?

Patricia Arquette
Freigeben: 2025-01-15 10:56:44
Original
245 Leute haben es durchsucht

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

Fremdschlüsseleinschränkungen und Nicht-Primärschlüsselspalten

Relationale Datenbanken nutzen Fremdschlüsseleinschränkungen, um die referenzielle Integrität zwischen Tabellen aufrechtzuerhalten. Während Fremdschlüssel normalerweise auf Primärschlüssel verweisen, gibt es Fälle, in denen der Verweis auf eine Nicht-Primärschlüsselspalte erforderlich ist.

Szenarioillustration

Lassen Sie uns zwei Tabellen untersuchen, table1 und table2:

<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>
Nach dem Login kopieren

Hier ist eine Fremdschlüsselbeziehung zwischen table2 und table1 unter Verwendung der Spalte AnotherID erwünscht, die in table1 kein Primärschlüssel ist.

Erstellen eines Fremdschlüssels zu einem Nicht-Primärschlüssel

Obwohl weniger häufig, ist das Erstellen eines Fremdschlüssels, der auf eine Nicht-Primärschlüsselspalte verweist, möglich. Für die Nicht-Primärschlüsselspalte muss jedoch eine eindeutige Einschränkung erzwungen werden:

<code class="language-sql">ALTER TABLE table1 ADD CONSTRAINT UQ_AnotherID UNIQUE (AnotherID);</code>
Nach dem Login kopieren

Diese eindeutige Einschränkung garantiert die Einzigartigkeit der AnotherID-Werte innerhalb von table1 und ermöglicht so deren Verwendung als Fremdschlüsselziel.

Empfohlene Alternative

Im Idealfall sollten Fremdschlüssel für eine stärkere referenzielle Integrität auf Primärschlüssel verweisen. Wenn möglich, entwerfen Sie Ihr Datenbankschema neu, um die table1-Spalte von ID als Fremdschlüsselziel in table2 zu verwenden. Dadurch entfällt die Notwendigkeit, eindeutige Einschränkungen für Nicht-Primärschlüsselspalten zu verwalten.

Das obige ist der detaillierte Inhalt vonWann sollten Sie einen Fremdschlüssel für eine Nicht-Primärschlüsselspalte verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage