Types d'associations
la démarche est très (trop?) détaillée afin de présenter le mécanisme des associations et la "navigation" entre les tables dans le soucis d'apprendre les bon réflexes cognitifs.
Les chapitres de cette section sont à étudier de près.
1. Association hiérarchique parent-enfant
Soit les tables Client et commandes en association hiérarchique :
Table parent : Client :
noCli | nomCli | adrCli |
---|---|---|
1 | Air France | C'est par ici |
15 | SAI | Sur la Terre |
357 | Timken | Quelque part |
Table enfant : Commande :
numCde | cdeDate | cliNum |
---|---|---|
2 | 01/01/04 | 357 |
3 | 01/01/05 | 15 |
Comment obtenir la réponse à la question :
- Quelle est la liste des numéros de commandes que le client SAI a passé ?
Cette liste correspond à la liste des commandes dont le numéro de client est égal à celui du client qui porte le nom SAI.
La réponse est la liste des commandes 1 et 3
numCde |
---|
3 |
La table enfant porte la clé étrangère cliNum en dépendance de référence avec noCli de la table parent.
Ou Commande.cliNum "pointe" vers noCli de Client.
Cette association est dite hiérarchique car :
- pour une ligne de la table enfant (commande) on trouve une et une seule ligne de la table parent (Client).
- et pour une ligne de la table parent (Client) on trouve une à plusieurs lignes de la table enfant (commande).
2. Association non hiérarchique
Soit les tables Client et commandes en association non hiérarchique :
Table Commande
cdeNum | cdeDate | noCli |
---|---|---|
2 | 02/01/04 | 357 |
3 | 03/01/04 | 15 |
Table Contenir
noCde | refArt | qté |
---|---|---|
1 | A1 | 5 |
1 | A3 | 1 |
2 | A1 | 4 |
2 | A2 | 30 |
3 | A2 | 25 |
Table Article
refArt | descArt | prix |
---|---|---|
A1 | ancre | 49,00 |
A2 | manille | 2,50 |
A3 | sextant | 1250,00 |
Comment obtenir la réponse à la question :
- Quelle sont les prix des articles de la commande du 02/01/04 ?
Pour cela, il faut observer le contenu de
- Commande pour obtenir le numéro de la commande (2), puis
- Contenir, qui associe la commande aux articles qu'elle contient (la cde 2 contient les articles de ref. A1 et A2) et
- Article pour obtenir les designations des articles trouvés (A1=>ancre et A2=>manille).
La réponse est donc "ancre" et "manille"
Pour y parvenir, nous avons parcourus les liens entre les tables
Cette association est dite non hiérarchique car :
- pour 1 ligne de la table Commande on trouve une à plusieurs lignes de la table à droite (Article).
- et pour 1 ligne de la table Article on trouve une à plusieurs lignes de la table à gauche (Commande).
La table Contenir, représente l'association entre Commande et Article.
Elle possède donc deux "clés étrangères" qui sont chacune en référence, l'une en référence au numéro de la Commande et l'autre en référence au code de l'Article, tous deux clés primaires de leur table respective.
Attention
la clé primaire de Contenir est composée par le couple (noCde, refArt).
Par définition, celle-ci ne pouvant pas avoir deux valeurs identiques, aucun couple n'est donc identique.
En conséquences de cette remarque, une commande (noCde) ne peut contenir plusieurs ligne du même article (refArt).
La quantité dans la table contenir représente la quantité d'article commandée par la commande.
En effectuant des requêtes qui font la liaison, qui associent plusieurs tables (au moins 2), on effectue une ... jointure SQL