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_nameL'explication est:
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)Une explication à cette syntaxe est:
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.