Modélisation d'une relation
Modélisation d'une relation
Si je voulais stocker les nom, prénom et numéro de téléphone de chaque propriétaire de jeux vidéo dans notre table jeux_video, il n'y aurait pas d'autre solution que de dupliquer ces informations sur chaque entrée… Cependant ce serait bien trop répétitif ; regardez ce que ça donnerait sur le tableau suivante.
ID |
nom |
prenom |
nom_possesseur |
tel |
console |
prix |
nbre_joueurs_max |
commentaires |
1 |
Super Mario Bros |
Florent |
Dugommier |
01 44 77 21 33 |
NES |
4 |
1 |
Un jeu d'anthologie ! |
2 |
Sonic |
Patrick |
Lejeune |
03 22 17 41 22 |
Megadrive |
2 |
1 |
Pour moi, le meilleur jeu au monde ! |
3 |
Zelda : ocarina of time |
Florent |
Dugommier |
01 44 77 21 33 |
Nintendo 64 |
15 |
1 |
Un jeu grand, beau et complet comme on en voit rarement de nos jours |
4 |
Mario Kart 64 |
Florent |
Dugommier |
01 44 77 21 33 |
Nintendo 64 |
25 |
4 |
Un excellent jeu de kart ! |
5 |
Super Smash Bros Melee |
Michel |
Doussand |
04 11 78 02 00 |
GameCube |
55 |
4 |
Un jeu de baston délirant ! |
Comme vous le voyez, le nom, le prénom et le numéro de téléphone de Florent apparaissent autant de fois qu'il possède de jeux vidéo, et il en irait de même pour Patrick et Michel. Il faut à tout prix éviter ces répétitions.
Ce que je vous propose, c'est de créer une autre table, que l'on nommera par exemple proprietaires, qui centralisera les informations des propriétaires des jeux (tableau suivante).
ID |
prenom |
nom |
tel |
1 |
Florent |
Dugommier |
01 44 77 21 33 |
2 |
Patrick |
Lejeune |
03 22 17 41 22 |
3 |
Michel |
Doussand |
04 11 78 02 00 |
Cette table liste tous les propriétaires de jeux connus et attribue à chacun un ID. Les propriétaires n'apparaissant qu'une seule fois, il n'y a pas de doublon.
Maintenant, il faut modifier la structure de la table jeux_video pour faire référence aux propriétaires. Pour cela, le mieux est de créer un champ ID_proprietaire qui indique le numéro du propriétaire dans l'autre table (tableau suivante).
ID |
nom |
ID_proprietaire |
console |
prix |
nbre_joueurs_max |
commentaires |
1 |
Super Mario Bros |
1 |
NES |
4 |
1 |
Un jeu d'anthologie ! |
2 |
Sonic |
2 |
Megadrive |
2 |
1 |
Pour moi, le meilleur jeu au monde ! |
3 |
Zelda : ocarina of time |
1 |
Nintendo 64 |
15 |
1 |
Un jeu grand, beau et complet comme on en voit rarement de nos jours |
4 |
Mario Kart 64 |
1 |
Nintendo 64 |
25 |
4 |
Un excellent jeu de kart ! |
5 |
Super Smash Bros Melee |
3 |
GameCube |
55 |
4 |
Un jeu de baston délirant ! |
Le nouveau champ ID_proprietaire est de type INT. Il permet de faire référence à une entrée précise de la table proprietaires.
On peut maintenant considérer que les tables sont reliées à travers ces ID de propriétaires, comme le suggère la figure suivante.
Relation entre deux tables
MySQL sait donc que l'ID_proprietaire no 1 dans la table jeux_video correspond à Florent ?
Non, il ne le sait pas. Il ne voit que des nombres et il ne fait pas la relation entre les deux tables. Il va falloir lui expliquer cette relation dans une requête SQL : on va faire ce qu'on appelle une jointure entre les deux tables.
Créé avec HelpNDoc Personal Edition: Écrire des livres électronique Kindle