Les concepteurs de bases de données utilisent largement les clés lors du développement de bases de données relationnelles. Parmi les plus courantes de ces clés figurent les clés primaires et les clés étrangères. Une clé étrangère de base de données est un champ dans une table relationnelle qui correspond à la colonne de clé primaire d'une autre table. Pour comprendre le fonctionnement d'une clé étrangère, examinons de plus près l'idée d'une base de données relationnelle.
Quelques bases des bases de données relationnelles
Dans une base de données relationnelle, les données sont stockées dans des tables contenant des lignes et des colonnes, ce qui facilite la recherche et la manipulation. Le concept de base de données relationnelle (algèbre relationnelle, proposé par E.F.) repose sur des calculs sérieux.
Codd chez IBM en 1970), mais ce n’est pas le sujet de cet article.
À des fins pratiques (et non mathématiciens), une base de données relationnelle stocke les données associées sous forme de lignes et de colonnes. En outre - et voici où cela devient intéressant - la plupart des bases de données sont conçues pour que les données d’une table puissent accéder aux données d’une autre table. Cette capacité à créer des relations entre les tables constitue le véritable pouvoir d'une base de données relationnelle.
Utilisation de clés étrangères
La plupart des tables, en particulier celles des grandes bases de données complexes, ont des clés primaires. Les tables conçues pour accéder à d'autres tables doivent également avoir une clé étrangère.
Pour utiliser la base de données Northwinds fréquemment citée, voici un extrait d'un tableau Product:
ID de produit | ProductName | ID de catégorie | QuantityPerU | Prix unitaire |
---|---|---|---|---|
1 | Chai | 1 | 10 boîtes x 20 sacs | 18.00 |
2 | Chang | 1 | Bouteilles de 24 à 12 oz | 19.00 |
3 | Sirop d'Anis | 2 | Bouteilles de 12 à 550 ml | 10.00 |
4 | Assaisonnement Cajun du chef Anton | 2 | 48 - pots de 6 oz | 22.00 |
5 | Gumbo Mix du chef Anton | 2 | 36 boîtes | 21.35 |
6 | Tartinade aux baies de grand-mère | 2 | Pots de 12 à 8 oz | 25.00 |
7 | Poires séchées biologiques d'oncle Bob | 7 | 12 - 1 lb pkgs. | 30.00 |
le ID de produit colonne est la clé primaire de cette table. Il attribue un identifiant unique à chaque produit.
Cette table contient également une colonne de clé étrangère, ID de catégorie. Chaque produit de la table Produit est lié à une entrée de la table Catégories qui définit la catégorie de ce produit.
Notez cet extrait de la table Categories de la base de données:
ID de catégorie | Nom de catégorie | La description |
---|---|---|
1 | Boissons | Boissons gazeuses, cafés, thés, bières et ales |
2 | Condiments | Sauces sucrées et salées, relives, tartinades et assaisonnements |
3 | Confections | Desserts, bonbons et ris de veau |
5 | Les produits laitiers | Les fromages |
La colonne ID de catégorie est la clé primaire de cette colonne. (Elle n'a pas de clé étrangère car elle n'a pas besoin d'accéder à une autre table.) Chaque clé étrangère de la table Product est liée à une clé primaire de la table Catégories. Par exemple, le produit Chai est affecté à la catégorie "Boissons", tandis que Sirop à l'anis est dans la catégorie Condiments.
Ce type de liaison crée une multitude de façons d'utiliser et de réutiliser des données dans une base de données relationnelle.