par
mere-teresa » 02 sept. 2009, 18:36
Pour expliquer un peu l'affaire, mettons que nous ayons des Agents nommés Anne, Bertrand et Charlotte. Et que nous ayons des agences TourEiffel, NotreDame et SacreCoeur.
Si dans l'agence TourEiffel on a Anne et Bertrand et David, on aura besoin de stocker ces infos.
Code : Tout sélectionner
Agents:
1 - Anne
2 - Bertrand
3 - Charlotte
4 - David
5 - Elmer
Agences:
1 - TourEiffel
2 - NotreDame
3 - SacreCoeur
On pourrait donc avoir pour chaque agent une info additionnelle
car mettre un champ additionnel genre listeAgents dans la table Agences est une mauvaise idée : on ne connaîtra pas sa taille maxi. et mettre des colonnes additionnels (genre Agence : id, nom, agent1, agent2, agent3...) est difficile, sans connaître le nombre limite d'agents possibles
Code : Tout sélectionner
Agents:
1 - Anne, agence TourEiffel (1)
2 - Bertrand, agence TourEiffel (1)
3 - Charlotte, agence NotreDame (2)
4 - David, agence TourEiffel (1)
5 - Elmer, agence SacreCoeur (3)
MAIS si un agent peut appartenir à plusieurs agences ?
Par exemple, David travaille parfois dans l'agence SacreCoeur, et Anne dans l'agence NotreDame ?
Pour les mêmes raisons déjà expliqués 3 lignes plus haut, on ne peut pas modifier la table Agents en ajoutant un champ lesAgences ou en ajoutant des colonnes (agence1, agence2).
On passe alors par une table de relations, qui va permettre de lister toutes les possibilités.
Code : Tout sélectionner
Agents:
1 - Anne
2 - Bertrand
3 - Charlotte
4 - David
5 - Elmer
Agences:
1 - TourEiffel
2 - NotreDame
3 - SacreCoeur
AgentsDansAgences :
1 - Anne (1), , agence TourEiffel (1)
2 - Anne (1), agence NotreDame (2)
3 - Bertrand (2), agence TourEiffel (1)
4 - Charlotte (3), agence NotreDame (2)
5 - David (4), agence TourEiffel (1)
6 - Elmer, agence SacreCoeur (3)
7 - David(4), agence SacreCoeur (3)
Et on pourra ajouter des informations par la suite !
Note que dans la réalité, on utilise les ID, donc les chiffres que j'ai mis entre parenthèses.
[code]Agents : id, nom
Agences: id, nom[/code]
[color=#000080]
Pour expliquer un peu l'affaire, mettons que nous ayons des Agents nommés Anne, Bertrand et Charlotte. Et que nous ayons des agences TourEiffel, NotreDame et SacreCoeur.
Si dans l'agence TourEiffel on a Anne et Bertrand et David, on aura besoin de stocker ces infos.[/color]
[code]Agents:
1 - Anne
2 - Bertrand
3 - Charlotte
4 - David
5 - Elmer
Agences:
1 - TourEiffel
2 - NotreDame
3 - SacreCoeur[/code]
[color=#000080]On pourrait donc avoir pour chaque agent une info additionnelle
car mettre un champ additionnel genre listeAgents dans la table Agences est une mauvaise idée : on ne connaîtra pas sa taille maxi. et mettre des colonnes additionnels (genre Agence : id, nom, agent1, agent2, agent3...) est difficile, sans connaître le nombre limite d'agents possibles
[/color]
[code]Agents:
1 - Anne, agence TourEiffel (1)
2 - Bertrand, agence TourEiffel (1)
3 - Charlotte, agence NotreDame (2)
4 - David, agence TourEiffel (1)
5 - Elmer, agence SacreCoeur (3)
[/code]
[color=#000080]MAIS si un agent peut appartenir à plusieurs agences ?
Par exemple, David travaille parfois dans l'agence SacreCoeur, et Anne dans l'agence NotreDame ?
Pour les mêmes raisons déjà expliqués 3 lignes plus haut, on ne peut pas modifier la table Agents en ajoutant un champ lesAgences ou en ajoutant des colonnes (agence1, agence2).
On passe alors par une table de relations, qui va permettre de lister toutes les possibilités.[/color]
[code]Agents:
1 - Anne
2 - Bertrand
3 - Charlotte
4 - David
5 - Elmer
Agences:
1 - TourEiffel
2 - NotreDame
3 - SacreCoeur
AgentsDansAgences :
1 - Anne (1), , agence TourEiffel (1)
2 - Anne (1), agence NotreDame (2)
3 - Bertrand (2), agence TourEiffel (1)
4 - Charlotte (3), agence NotreDame (2)
5 - David (4), agence TourEiffel (1)
6 - Elmer, agence SacreCoeur (3)
7 - David(4), agence SacreCoeur (3)[/code]
[color=#000080]Et on pourra ajouter des informations par la suite !
Note que dans la réalité, on utilise les ID, donc les chiffres que j'ai mis entre parenthèses.[/color]