Que sont les clés étrangères sqlite

Que sont les clés étrangères sqlite
SQLite est un RDBM open source (système de gestion de la base de données relationnelle), qui gère les données dans les tableaux. Les tableaux utilisés dans les bases de données peuvent avoir des relations les uns avec les autres, pour établir cette relation, les clés étrangères sont utilisées. Les touches étrangères indiquent quelle table est connectée à quel tableau.

Les relations entre les tables sont la caractéristique clé des bases de données relationnelles, qui sont représentées par des clés étrangères et primaires. Dans cet article, nous expliquerons les clés étrangères et leur travail dans SQLite.

Que sont les clés étrangères?

Les clés étrangères sont les valeurs d'un tableau qui indiquent la clé primaire d'un autre tableau. Pour comprendre cela, considérons deux tables, le tableau A et le tableau B:

Tableau A

ID étudiant (primaire_key) Nom d'étudiant ID de l'enseignant (Forign_Key)
1 John 123
2 Paul 453

Tableau B

ID de l'enseignant (primaire_key) Noms des enseignants Sujets autorisés
123 Alex Mathématiques, physique
453 Juana Chimie, botanique

Maintenant, dans le tableau A, Carte d'étudiant est la clé principale de ce tableau, et Pièce d'identité est la clé étrangère, mais dans le tableau B, Pièce d'identité est la clé principale. L'ID de l'enseignant, qui est une clé étrangère, établit une relation entre le tableau A au tableau B.

Comment vérifier l'état de la clé étrangère dans Sqlite

Sqlite commence à prendre en charge la fonctionnalité d'une clé étrangère après la sortie de sa version 3.6.19, afin de vérifier si la version installée de SQLite prend en charge la clé étrangère ou non, exécutez la commande suivante dans l'environnement SQLite:

Pragma Foreign_keys;

La sortie peut être «0» ou «1» et si elle n'affiche aucune sortie, cela signifie qu'il ne prend pas en charge les touches étrangères.

Sortir Résultat
0 Les clés étrangères sont désactivées
1 Les clés étrangères sont activées

Comment activer / désactiver les clés étrangères dans SQLite

Pour activer les touches étrangères dans SQLite, exécutez ce qui suit:

Pragma étrangère_keys = on;

Nous pouvons désactiver les clés étrangères, en tapant simplement à la place dans la commande ci-dessus. Pour confirmer que les clés étrangères sont activées, exécutez la commande Pragma:

Pragma Foreign_keys;

La sortie montre 1, ce qui signifie que les touches étrangères sont activées.

Quelle est la syntaxe générale de l'utilisation de la clé étrangère

La syntaxe générale de l'utilisation d'une clé étrangère pour créer une table est:

Créer une table de table_name
(
Column1 DataType [null | Pas nul] clé primaire,
Column2 DataType [null | Pas nul] clé étrangère,

Clé étrangère (colonne1, colonne2,…))
Références Parent_Table (Column1, Column2…)
));

L'explication est:

  • Utilisez la clause «Créer une table» pour la création d'une table
  • Remplacez la table_nom par le nom de la table
  • Définissez les colonnes avec leurs types de données, et définissez également si le support nul / pas les valeurs nulles
  • Mentionne également les colonnes qui détiennent la clé primaire et la clé étrangère
  • Utilisez la déclaration CLÉ ÉTRANGÈRE et mentionner dans () les noms de colonne qui sont des clés étrangères
  • Utilisez la clause RÉFÉRENCE et remplacer le parent_table par le nom de la table parent et mentionner ses clés étrangères

Comment fonctionne une clé étrangère dans Sqlite

Pour comprendre le fonctionnement des clés étrangères, considérons un exemple de service de messagerie et créez deux tables, Customer_Details et expédition_details qui ont les données suivantes:

Détails du client

N ° de client Customer_name ID d'expédition
1 John 5612
2 Paul 3467

Détails de l'envoi

ID d'expédition Statut De (ville) À (ville)
5612 Livré Londres Manchester
3467 En cours Bristol Cardiff

Dans le tableau, Customer_Details, Customer_ID est la clé principale et Shipment_id est une clé étrangère. Et dans le tableau, expédition_details, expédition_id est une clé principale.

Comment ajouter une clé étrangère dans Sqlite

Pour créer une table, Customer_Details exécute la commande suivante:

Créer une table Customer_Details (Customer_ID INTEGER CLIE PRIMATION, Customer_Name Text Not Null, expédition_id Integer pas nul, clé étrangère (expédition_id) références expédiées_details (expédition_id));

Dans le commandement ci-dessus, nous avons mentionné la clé étrangère et la clé primaire et nous référons également au tableau où la clé étrangère sera disponible. Après la création de la table Customer_Details, nous créerons la table Shipment_Details comme:

Créer des tableaux d'expédition_details (expédition_id clé primaire entière, texte de statut, texte city_from, City_To Text);

Maintenant, pour insérer des valeurs dans la table Customer_Details, utilisez la commande suivante:

Insérer dans Customer_Details (Customer_ID, Customer_Name, Shipment_ID) VALEURS (1, «John», 5612), (2, «Paul», 3467);

Nous pouvons voir que cela a généré l'erreur de «Erreur: la contrainte de clé étrangère a échoué», Cette erreur est générée parce que nous faisions référence à l'expédition_id de la table, expédition_details, qui n'a pas encore de valeur. Donc, pour supprimer cette erreur, nous devons d'abord modifier les données dans expédition_details, que nous faisons référence à la clé étrangère. Pour insérer des données dans le tableau Expédition_Details, exécutez la commande suivante:

Insérer dans Shipment_Details (expédition_id, statut, ville_from, ville_to) (5612, 'livré', 'Londres', 'Manchester'), (3467, 'in_process', 'Bristol', 'Cardiff');

Pour afficher la table, expédition_details, exécutez la commande:

SELECT * FROM Shipment_Details;

Maintenant, exécutez à nouveau la commande pour insérer des valeurs dans client_details à l'aide de l'instruction:

Insérer dans Customer_Details (Customer_ID, Customer_Name, Shipment_ID) VALEURS (1, «John», 5612), (2, «Paul», 3467);

La commande a réussi à exécuter sans générer l'erreur «Contrainte de la clé étrangère». Pour afficher la table, exécutez la commande:

SELECT * FROM Customer_Details;

Quelles sont les actions des contraintes de clés étrangères

Il y a des actions que vous pouvez effectuer sur la clé parent à la suite de laquelle la clé d'enfant répond. La syntaxe générale est:

Clé étrangère (étrangère_key_column)
Références parent_table (parent_key_column)
À la mise à jour
Sur supprimer;

Une explication à cette syntaxe est:

  • Écrivez la clause de CLÉ ÉTRANGÈRE et remplacez le "Foreign_key_Column" par le nom de votre clé étrangère
  • Remplacez le «parent_table» par le nom de la table parent et également «parent_key_columns» par le nom de la clé parent
  • Écrivez la clause «sur la mise à jour» et «sur la suppression» et remplacez le «» par l'action que vous souhaitez effectuer

SQLite prend en charge les actions qui sont expliquées dans le tableau:

Action Description
Nul Lorsque la touche parent est supprimée, la colonne de la clé enfant définie sur des valeurs nulles
Définir par defaut Il fonctionne de la même manière que l'action NULL, mais au lieu de définir des valeurs nulles à la colonne de la clé enfant, il définit une valeur par défaut
Pas d'action Lorsque des modifications sont apportées dans la clé parent de la base de données des parents, aucune modification n'est apportée à la clé enfant
Limiter Il ne permet pas à l'utilisateur d'ajouter ou de supprimer les valeurs d'une clé parent
Cascade Il passe sur les modifications qui sont apportées dans une table parentale à la table des enfants

Conclusion

Les bases de données relationnelles sont populaires pour leur caractéristique de fournir les relations entre les tables, SQLite, l'une des bases de données relationnelles, prend également en charge cette fonctionnalité. Les relations sont établies à l'aide de clés, appelées clés étrangères et primaires. Dans Sqlite, la clé étrangère doit être en mesure de l'utiliser. Dans cet article, nous avons appris quelles sont les clés étrangères de Sqlite et comment elles fonctionnent. Nous avons également discuté des actions de contrainte des clés étrangères soutenues par SQLite.