Maison > base de données > tutoriel mysql > Les colonnes de clé étrangère peuvent-elles accepter les valeurs NULL dans une base de données ?

Les colonnes de clé étrangère peuvent-elles accepter les valeurs NULL dans une base de données ?

Linda Hamilton
Libérer: 2025-01-11 06:44:41
original
629 Les gens l'ont consulté

Can Foreign Key Columns Accept NULL Values in a Database?

Contraintes de clé étrangère autorisant les valeurs nulles

Dans la conception de bases de données, il est souvent nécessaire d'utiliser des clés étrangères pour établir des relations entre les tables afin de garantir l'intégrité référentielle. Cependant, dans certains cas, il peut être nécessaire d'assouplir les contraintes en permettant à certaines colonnes de clé étrangère d'être nulles.

Question :

Les colonnes de table avec des clés étrangères dans la base de données peuvent-elles être vides ?

Réponse :

Oui, les colonnes de clé étrangère peuvent contenir des valeurs nulles. Cela rend la modélisation des données plus flexible et peut être utilisée dans des scénarios dans lesquels l'intégrité référentielle est appliquée uniquement lorsqu'il n'y a que des données non nulles dans la colonne de clé étrangère.

Exemple MySQL :

Considérons une base de données MySQL avec les tables suivantes :

<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>
Copier après la connexion

Dans cet exemple, la colonne parent_id de la table enfant est définie comme nullable. Cela signifie que la table enfant peut avoir des lignes avec une valeur NULL dans la colonne parent_id.

Appliquer la contrainte uniquement si la valeur n'est pas vide :

Pour appliquer l'intégrité référentielle uniquement lorsque la valeur de la clé étrangère n'est pas nulle, définissez la contrainte de clé étrangère à l'aide de la clause ON DELETE SET NULL ou ON UPDATE SET NULL. Par exemple, l'instruction suivante applique une contrainte de clé étrangère uniquement si la valeur de la clé étrangère n'est pas nulle :

<code class="language-sql">ALTER TABLE child
ADD FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE SET NULL ON UPDATE SET NULL;</code>
Copier après la connexion

Cette configuration permet d'insérer des valeurs nulles dans la colonne parent_id, mais toute mise à jour ou suppression ultérieure dans la table parent sera répercutée sur la table enfant, ce qui entraînera la définition de la valeur parent_id correspondante dans la table enfant sur NULL.

Conclusion :

En permettant aux colonnes de clé étrangère d'être nulles et en utilisant la clause ON DELETE SET NULL ou ON UPDATE SET NULL, les administrateurs de bases de données peuvent établir des relations entre les tables tout en offrant une flexibilité dans la gestion des données. Cela garantit l'intégrité référentielle tout en permettant une utilisation dans des situations où une référence spécifique peut ne pas être immédiatement disponible ou a été intentionnellement laissée vide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal