Relation 1: n
Considérons une base de données qui contient les informations sur des livres d'une bibliothèque.
| table : livre |
| no |
titre |
sujet |
auteur |
Pages |
annee |
edition |
addresse |
telephone |
| 1 |
Internet |
informatique |
Pierre Laroche |
290 |
1998 |
Autodesk |
SilliconValley |
555-1234 |
| 2 |
3ds Max |
informatique |
Brain Man |
501 |
2008 |
Autodesk |
SilliconValley |
555-1234 |
| 3 |
Linux |
OS |
Linus Torvalds |
565 |
2005 |
Autodesk |
SilliconValley |
555-1234 |
| 4 |
Les misérables |
romman |
Victor Hugo |
294 |
1945 |
La plume |
Paris |
555-3423 |
| 5 |
LaFontaine |
Conte |
Lafontaine |
45 |
1950 |
La plume |
Paris |
555-3423 |
On remarque que plusieurs informations sont répétitives. Si on considère qu'une bibli;thèque contient des milliers de livres, alors beaucoup d'espace en mémoire est simplement gaspillé. Pour résoudre ce problème, on va créer 2 tables et établir une relation entre les deux. La première table contiendra les informations sur les livres et la seconde pour la maison d'édition.
| table : livre |
| no |
titre |
sujet |
auteur |
Pages |
annee |
noEdition |
| 1 |
Internet |
informatique |
Laroche |
290 |
1998 |
1 |
| 2 |
3ds Max |
informatique |
Brain Man |
501 |
2008 |
1 |
| 3 |
Linux |
OS |
Torvalds |
565 |
2005 |
1 |
| 4 |
Misérables |
romman |
Victor Hugo |
294 |
1945 |
2 |
| 5 |
LaFontaine |
Conte |
Lafontaine |
45 |
1950 |
2 |
|
| table : edition |
| noEdition |
edition |
addresse |
telephone |
| 1 |
Autodesk |
SilliconValley |
555-1234 |
| 2 |
La plume |
Paris |
555-3423 |
|
La relation entre les 2 tables est établie en ajoutant un champs noEdition à la table livre
| table : edition |
| noEdition |
clé primaire |
| edition |
|
| adresse |
|
| telephone |
|
|
|
| table : livre |
| no |
clé primaire |
| titre |
|
| sujet |
|
| auteur |
|
| pages |
|
| noEdition |
clé étrangère |
|
Relation m : n
Considérons la table ci-dessous
| table : eleves |
| noEleve |
nom |
prenom |
annee |
cote |
titreCours |
description |
| 1 |
Laroche |
Arthur |
11 |
ICS3M |
Étude informatique |
informatique |
| 2 |
Calloux |
Frédéric |
11 |
ICS3M |
Étude informatique |
informatique |
| 3 |
Calloux |
Frédéric |
11 |
MAT3U |
Mesure et relations |
mathématiques |
| 4 |
LeChien |
Dino |
12 |
MAT3U |
Mesure et relations |
mathématiques |
| 5 |
LeChien |
Dino |
12 |
ICE4M |
Système informatique |
réseau |
Encore ici, on a des données répétitives. La solution est de séparer les données en 2 table. Malheureusement, une relation 1 à n est impossible car un élève à plusieurs cours un un cours à plusieurs élèves. Donc on ne peut pas ajouter un champs dans l'une des 2 tables pour créer le lien.
| table : eleve |
| noEleve |
clé primaire |
| nom |
|
| prenom |
|
| annee |
|
|
|
| table : cours |
| cote |
clé primaire |
| titreCours |
|
| description |
|
|
Pour créer le lien on doit créer une troisième table. La table suit cours a pour seul but de faire le lien entre un élève et cours ( tel élève suit tel cours ) . La table suitCours est composé des cléprimaires des 2 autres tables
| table : eleve |
| noEleve |
clé primaire |
| nom |
|
| prenom |
|
| annee |
|
|
2 relations 1 à n
| table : suitCours |
| noEleve |
clé primaire |
| cote |
clé primaire |
|
| table : cours |
| cote |
clé primaire |
| titreCours |
|
| description |
|
|
Accueil |