Créer clés étrangères
Comme pour d’autres objets de la base de données, il existe plusieurs façons de créer des contraintes de clé étrangère :
•Depuis le Navigateur en ligne
•Depuis l’Éditeur Design
•En générant SQL depuis un objet de clé étrangère existant.
Prérequis
Lorsque vous créez des clés étrangères, notez les prérequis suivants :
•Les colonnes qui font partie de la relation de la clé étrangère doivent être du même type de données et de la même longueur.
•La colonne référençant (Department.ID, dans cet exemple) doit faire partie de la clé primaire ou de la clé unique.
Veuillez aussi noter le comportement spécifique à la base de données :
•Dans le SQL Server, vous pouvez ajouter une référence de clé étrangère à une colonne, non seulement si celle-ci fait partie de la clé primaire ou unique, mais aussi si un indexe unique y est défini. Ceci est également possible dans des versions plus récentes de MySQL (à condition que le moteur de stockage est InnoDB).
•SQLite ne prend pas en charge l’ajout des clés étrangères aux tables existantes. Vous pouvez créer des contraintes uniquement au moment de la création d’une table.
Préparer la base de données
Les instructions ci-dessous présentent diverses manières pour créer une relation de clé étrangère entre deux tables. Nous utiliserons les tables discutées dans l’exemple précédent, Employé et Département, et une base de données SQL Server. Les instructions sont semblables dans d’autres bases de données. Si vous voulez suivre les instructions ci-dessous à la lettre, vous pouvez préparer votre base de données SQL Server en exécutant le script suivant :
CREATE TABLE |
Scripts de création de la table (SQL Server)
Dans le script SQL ci-dessus, notez que la colonne Department.ID est une clé primaire. Aussi, les colonnes Employee.DepartmentID et Department.ID sont toutes les deux de type integer, qui remplissent les prérequis pour créer une relation de clé étrangère entre ces deux colonnes.
Créer des clés étrangère depuis le Navigateur en ligne
1.Cliquez avec la touche de droite dans la table Employé et sélectionnez Créer Clé | Créer Clé étrangère depuis le menu contextuel. La clé étrangère apparaît dans le dossier « Clés » avec le nom <generated>. Aussi, un script est généré dans la fenêtre Script de changement de structure de la base de données. À cette étape, vous pouvez toujours et encore restaurer les changements en cliquant sur le bouton Actualiser .
2.En option, sélectionnez le nom <generated> et appuyez sur F2 pour le renommer.
3.Double-cliquez sur « Choisir une table » et naviguez pour trouver la table étrangère. Dans cet exemple, la table étrangère est Département. Notez que la colonne ID est sélectionnée automatiquement car elle est la colonne sur laquelle se trouve la clé primaire.
4.Cliquez sur le bouton Exécuter le script de changement dans la fenêtre de Script de changement de structure de la base de données.
Créer des clés étrangères dans l’Éditeur Design (approche 1)
1.Ajoutez les deux tables dans l’Éditeur Design (Employé et Département).
2.Suivez une des étapes suivantes :
oGlissez la colonne DepartmentID depuis la section « Colonnes » de la table Employé (ou du Navigateur en ligne) et déposez-la dans la section « Clé ». Sélectionnez Créer clé étrangère depuis le menu contextuel lorsqu’invité.
oGlissez la Clé primaire depuis la section « Clé » de la table Département (ou du Navigateur en ligne) et déposez-la dans la section « Clé » de la table Employé.
Par défaut, une clé étrangère ayant le nom <generated> est automatiquement créée dans la première colonne qui a le même type de données que la colonne qui est référencée par la clé glissée ou l’index, respectivement. Ceci peut ou ne peut pas être la colonne dans laquelle vous avez besoin de la clé étrangère. Pour cela, le cas échéant, double-cliquez sur la colonne (dans la section « Clé ») et sélectionnez la bonne colonne depuis la liste.
3.Cliquez sur le bouton Exécuter le script de changement dans la fenêtre de Script de changement de structure de la base de données.
Créer des clés étrangères dans l’Éditeur Design (approche 2)
1.Suivez une des étapes suivantes :
oCliquez sur l’icône Créer Nouvelle Contrainte de clé dans la section « Clé » du design de table, puis sélectionnez Créer Clé étrangère depuis le menu contextuel.
oCliquez avec la touche de droite sur le design de table et sélectionnez Insérer nouvelle | Clé | Clé étrangère depuis le menu contextuel.
Une clé étrangère ayant le nom <generated> est créée automatiquement sans référence à une table particulière. Pour choisir la table référencée, cliquez sur [sélectionner la table référencée] et sélectionnez la table requise depuis la liste.
2.Le cas échéant, définissez les colonnes « de » et « à » pour la clé étrangère comme suit :
oPour changer la colonne dans laquelle se trouve la clé étrangère, double-cliquez dans la colonne (dans la section « Clé », sous les « Colonnes ») et sélectionnez la saisie appropriée depuis la liste.
oPour changer la colonne vers laquelle la clé étrangère pointe, double-cliquez dans la colonne (dans la section « Clé », sous « Référence ») , et sélectionnez la saisie appropriée depuis la liste.
3.Cliquez sur le bouton Exécuter le script de changement dans la fenêtre de Script de changement de structure de la base de données.
Nommer les clés étrangères
Par défaut, le nom de la clé étrangère est <generated>, ce qui signifie que son nom sera automatiquement généré par la base de données. Ceci garantit le caractère unique du nom dans la base de données. Si requis, vous pouvez écraser le nom généré. À cette fin, saisissez un nom descriptif à la place de <generated>, et appuyez sur Enter.
Si vous écrasez le nom généré avec un nom personnalisé, le nouveau nom doit être unique ; autrement, des erreurs apparaîtront lorsque le script de changement de la base de données est exécuté. |
Note : | dans SQLite, les noms de clé personnalisés sont ignorés par la base de données. Le nom de clé affiché dans le Navigateur en ligne de DatabaseSpy est le nom clé interne tel que fourni par la base de données. |
Créer des clés étrangères en générant SQL
Pour créer une clé étrangère, vous pouvez aussi générer une instruction SQL en utilisant une clé étrangère existante comme modèle, comme suit.
1.Dans le Navigateur en ligne, élargissez le dossier « Clés » de la table qui contient une clé étrangère existante.
2.Cliquez avec la touche de droite sur la clé étrangère et sélectionnez Afficher dans un nouvel Éditeur SQL | Ajouter depuis le menu contextuel. Notez que cette commande est désactivée si la base de données ne prend pas en charge la modification de la structure des tables existantes.
3.Dans l`Éditeur SQL, éditez le nom de la table, le nom de la colonne, ainsi que le nom de la clé étrangère tel que requis.
4.Cliquez sur le bouton Exécuter pour exécuter l’instruction SQL et créer la nouvelle clé étrangère.
Références à travers les schémas
Les clés étrangères peuvent aussi référencer une colonne dans la table qui est située dans un schéma différent. Lorsque vous définissez la référence utilisant l’Éditeur Design, les tables dans le même schéma sont imprimées en noir, alors que les tables situées dans un schéma différent sont imprimées en bleu, par exemple :