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