La puissance des clés étrangères dans les bases de données relationnelles

Une clé étrangère ouvre la porte à tout un monde de données

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 sont les clés primaires et les clés étrangères. Une clé étrangère de base de données est un champ d'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 d'une base de données relationnelle (algèbre relationnelle, proposée par EF)

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 «connexes» dans les lignes et les colonnes. De plus, et c'est là que cela devient intéressant, la plupart des bases de données sont conçues de sorte 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 est 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'une table Product:

Extrait de la table des produits de la base de données Northwind
ProductID ProductName CategoryID QuantitéPerU Prix ​​unitaire
1 Chai 1 10 boîtes x 20 sacs 18h00
2 Chang 1 24 - 12 bouteilles d'once 19h00
3 Sirop d'anis 2 12 - Bouteilles de 550 ml 10.00
4 L'assaisonnement cajun du chef Anton 2 48 - pots de 6 oz 22h00
5 Gumbo Mix de Chef Anton 2 36 boîtes 21,35
6 Tartinade de Boysenberry de grand-mère 2 12 - pots de 8 oz 25h00
7 Poires séchées biologiques de l'oncle Bob 7 12 - 1 lb pqgs. 30h00

La colonne ProductID est la clé primaire de cette table. Il attribue un identifiant unique à chaque produit.

Cette table contient également une colonne de clé étrangère, CategoryID . Chaque produit de la table Produit est lié à une entrée du tableau Catégories qui définit la catégorie de ce produit.

Notez cet extrait du tableau Catégories de la base de données:

Base de données de Northwind
CategoryID Nom de catégorie La description
1 Boissons Boissons gazeuses, cafés, thés, bières et ales
2 Condiments Sauces, relish, pâtes à tartiner et assaisonnements sucrés et salés
3 Confections Desserts, bonbons et ris de veau
5 Les produits laitiers Les fromages

La colonne CategoryID est la clé primaire de cette colonne. (Il n'a pas de clé étrangère car il n'a pas besoin d'accéder à une autre table.) Chaque clé étrangère de la table Produit est liée à une clé primaire dans la table Catégories. Par exemple, le produit Chai est classé dans la catégorie "Boissons", tandis que Anised Syrup est dans la catégorie Condiments.

Ce type de liaison crée une myriade de façons d'utiliser et de réutiliser les données dans une base de données relationnelle.