Liens plusieurs à plusieurs
Un lien plusieurs à plusieurs intervient quand plusieurs enregistrements d'une table sont associés à plusieurs enregistrements d'une autre table. Par exemple, un lien plusieurs à plusieurs existe entre les clients et les produits : les clients peuvent acheter plusieurs produits et les produits peuvent être achetés par plusieurs clients.
Les systèmes de base de données relationnelle ne vous autorisent habituellement pas à mettre en œuvre un lien plusieurs à plusieurs direct entre deux tables. Prenons pour exemple le suivi des factures. Si vous aviez plusieurs factures portant le même numéro et que l'un de vos clients vous demandait ce numéro, vous ne sauriez pas à quel numéro il se réfère. C'est l'une des raisons qui expliquent l'affectation d'une valeur unique à chaque facture.
Pour éviter ce problème, vous pouvez diviser le lien plusieurs à plusieurs en deux liens un à plusieurs en utilisant une troisième table appelée table de lien. Chaque enregistrement d'une table de lien intègre une rubrique source. Celle-ci contient la valeur des clés primaires des deux tables liées. (Dans la table de lien, ces rubriques sources sont les clés étrangères.) Ces rubriques de clés étrangères contiennent des données, les enregistrements de la table de lien étant créés à partir de l'une des deux tables liées.
Le lien entre les étudiants et les classes est un exemple type de lien plusieurs à plusieurs. Un étudiant peut s'inscrire à plusieurs classes et une classe peut s'adresser à plusieurs étudiants.
L'exemple suivant propose une table Etudiants (qui contient un enregistrement pour chaque étudiant) et une table Classes (qui contient un enregistrement pour chaque classe). Une table de lien (Inscriptions) crée deux liens un à plusieurs : une entre chacune des deux tables.
La clé primaire N° étudiant désigne de manière unique chaque étudiant de la table Etudiants. La clé primaire N° classe désigne de manière unique chaque classe de la table Classes. La table Inscriptions contient les clés étrangères N° étudiant et N° classe.
Pour configurer une table de lien dans un lien plusieurs à plusieurs :
- A l'aide de l'exemple ci-dessus, créez une table appelée Inscriptions. Ce sera votre table de lien.
- Dans la table Inscriptions, créez une rubrique N° étudiant et une rubrique N° classe.
Les tables de lien utilisent habituellement des rubriques qui n'auraient aucun sens dans d'autres tables. Ajoutez des rubriques à la table Inscriptions, par exemple une rubrique Date pour pouvoir dire à quelle date un étudiant a commencé une classe et une rubrique Coût pour effectuer un suivi des frais dont l'étudiant s'est acquitté pour suivre une classe.
- Créez un lien entre les deux rubriques N° étudiant des tables. Créez ensuite un lien entre les deux rubriques N° cours des tables.
En suivant cette logique, si un étudiant s'inscrit à trois classes, il aura un enregistrement dans la table Etudiants et trois enregistrements dans la table Inscriptions (un pour chaque classe auquel il s'est inscrit).
Remarques
- Les tables de lien peuvent accéder aux rubriques et aux données des tables sans devoir créer de lien séparé. Par exemple, pour afficher une liste de toutes les classes auxquels un étudiant s'est inscrit, créez une table externe dans un modèle basé sur la table Etudiants. Concevez la table externe de sorte qu'elle affiche les enregistrements liés depuis la table Classes. Ajoutez ensuite dans la table externe les rubriques appropriées de la table Classes. Lorsque vous parcourez les enregistrements dans le modèle Etudiants, la table externe affiche toutes les classes auxquels un étudiant en particulier s'est inscrit.