Heim > Datenbank > MySQL-Tutorial > Können Fremdschlüsselspalten NULL-Werte in einer Datenbank akzeptieren?

Können Fremdschlüsselspalten NULL-Werte in einer Datenbank akzeptieren?

Linda Hamilton
Freigeben: 2025-01-11 06:44:41
Original
633 Leute haben es durchsucht

Can Foreign Key Columns Accept NULL Values in a Database?

Fremdschlüsseleinschränkungen, die Nullwerte zulassen

Beim Datenbankdesign ist es häufig erforderlich, Fremdschlüssel zu verwenden, um Beziehungen zwischen Tabellen herzustellen und die referenzielle Integrität sicherzustellen. In manchen Fällen kann es jedoch notwendig sein, die Einschränkungen zu lockern, indem man zulässt, dass einige Fremdschlüsselspalten null sind.

Frage:

Können Tabellenspalten mit Fremdschlüsseln in der Datenbank leer sein?

Antwort:

Ja, Fremdschlüsselspalten können Nullwerte enthalten. Dies macht die Datenmodellierung flexibler und kann in Szenarien verwendet werden, in denen die referenzielle Integrität nur dann erzwungen wird, wenn die Fremdschlüsselspalte nur Daten ungleich Null enthält.

MySQL-Beispiel:

Stellen Sie sich eine MySQL-Datenbank mit den folgenden Tabellen vor:

<code class="language-sql">CREATE DATABASE t;
USE t;

CREATE TABLE parent (
  id INT NOT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (
  id INT NULL,
  parent_id INT NULL,
  FOREIGN KEY (parent_id) REFERENCES parent(id)
) ENGINE=INNODB;</code>
Nach dem Login kopieren

In diesem Beispiel ist die Spalte „parent_id“ in der untergeordneten Tabelle als nullfähig definiert. Dies bedeutet, dass die untergeordnete Tabelle Zeilen mit einem NULL-Wert in der Spalte parent_id enthalten kann.

Erzwingen Sie die Einschränkung nur, wenn der Wert nicht leer ist:

Um die referenzielle Integrität nur dann zu erzwingen, wenn der Fremdschlüsselwert nicht null ist, definieren Sie die Fremdschlüsseleinschränkung mithilfe der Klausel ON DELETE SET NULL oder ON UPDATE SET NULL. Die folgende Anweisung erzwingt beispielsweise eine Fremdschlüsseleinschränkung nur, wenn der Fremdschlüsselwert nicht null ist:

<code class="language-sql">ALTER TABLE child
ADD FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE SET NULL ON UPDATE SET NULL;</code>
Nach dem Login kopieren

Diese Konfiguration ermöglicht das Einfügen von Nullwerten in die Spalte „parent_id“, aber alle nachfolgenden Aktualisierungen oder Löschungen in der übergeordneten Tabelle werden an die untergeordnete Tabelle weitergegeben, wodurch der entsprechende Wert „parent_id“ in der untergeordneten Tabelle auf NULL gesetzt wird.

Fazit:

Indem Datenbankadministratoren zulassen, dass Fremdschlüsselspalten null sind, und die Klausel ON DELETE SET NULL oder ON UPDATE SET NULL verwenden, können sie Beziehungen zwischen Tabellen herstellen und gleichzeitig Flexibilität bei der Datenverwaltung bieten. Dies stellt die referenzielle Integrität sicher und ermöglicht gleichzeitig die Verwendung in Situationen, in denen eine bestimmte Referenz möglicherweise nicht sofort verfügbar ist oder absichtlich leer gelassen wurde.

Das obige ist der detaillierte Inhalt vonKönnen Fremdschlüsselspalten NULL-Werte in einer Datenbank akzeptieren?. 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