Maison >base de données >tutoriel mysql >Comment créer une clé étrangère vers une colonne de clé non primaire ?
Question :
Comment maintenir l'intégrité référentielle en créant une clé étrangère pointant vers une colonne de clé non primaire dans une autre table ?
Réponse :
Bien qu'il soit généralement recommandé de référencer une clé primaire lors de la création d'une clé étrangère, sous certaines conditions il est possible de créer une clé étrangère qui pointe vers une clé non primaire.
Solution :
Pour créer une clé étrangère pointant vers une clé non primaire, une contrainte unique doit être appliquée à la colonne cible dans la table référencée. Cela signifie que les valeurs de la colonne doivent être uniques pour garantir l'intégrité des données.
Exemple :
Considérez la structure de tableau suivante :
<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>
Dans cet exemple, la colonne AnotherID de la table1 n'est pas une clé primaire. Cependant, il a une contrainte unique qui nous permet de créer une relation de clé étrangère entre table2 et table1 à l'aide de la colonne AnotherID.
Alternative :
Si vous ne parvenez pas à créer une contrainte unique sur une colonne de clé non primaire, envisagez plutôt d'utiliser la clé primaire de la table référencée comme clé étrangère. Cette méthode garantit une plus grande intégrité de la base de données et est généralement recommandée.
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!