Informatique


Réflexion sur la modélisation

Soit les 3 shémas suivants


Figure A




Figure B




Figure C

Modélisons un centre de formation

Nous aurons donc à gérer:

On s'en doute, il existera une entité "profs", une entité "groupes" et une entité "salles".
Mais la difficulté est de déterminer quelle sera la nature des relations que ces entités devront entretenir entre elles.

Hypothèse n°1

Chaque prof a en charge un certain nombre de groupes (toujours les mêmes sur une période donnée), et chaque groupe a toujours cours dans la même salle.

On peut néanmoins se demander s'il ne faudrait pas ajouter à cela une relation directe entre les profs et les salles, comme dans la figure B, pour dire « tel prof a cours dans telle salle ». On comprend vite que cela ne servirait qu'à compliquer les choses, sans apporter la moindre information supplémentaire.
En effet, avec une architecture de type A, on sait déjà que tel prof a en charge telle groupe, et on sait aussi où chaque groupe a cours. On peut donc facilement retrouver dans quelles classes enseigne chaque prof.
Si j'adopte la figure B, la relation supplémentaire qu'elle introduit signifie qu'on va dorénavant noter ce renseignement indépendamment du cours concerné.
Soit cette information supplémentaire est cohérente avec celle que me donnait la chaîne qui reliait les profs aux classes et les classes aux cours, et elle n'apporte donc aucune information supplémentaire. Soit elle n'est pas cohérente avec ce qu'on peut reconstituer au travers de la chaîne profs - classes - salles, et l'administrateur de la base de données va avoir quelques nuits blanches.
Bref, dans les deux cas, ce ne sont que des ennuis et aucun avantage.

Reste la possibilité d'une seule relation tridimensionnelle (figure C). Il faudrait alors informer le système de chaque combinaison prof-classe-salle. A priori, tout va bien... sauf que nous ouvririons ainsi la possibilité de saisir que le groupe X a cours tantôt en salle 120, tantôt en salle 124, etc. Or, il était bien stipulé que chaque classe avait toujours cours dans la même salle. Exit donc cette solution.

Hypothèse n°2

Un prof prend en charge un groupe et fait cours dans une salle. Les salles ne sont pas toujours attribuées aux mêmes profs ni aux mêmes groupes.

On reconnaît là la situation où chaque cours rassemble à la fois un prof, un groupe et une salle, sans aucune contrainte ni obligation de régularité.
Autrement dit, il faut que mon modèle autorise à associer à tout moment tout élément des entités profs, groupes et salles : il s'agit évidemment d'une relation du type de la figure C.

Regardons ce qui se passerait si j'optais pour la figure A.
Dans ce cas, je pourrais établir les relations entre profs et groupes et entre groupes et salles.
Mais:

Hypothèse n°3

Les profs ont en charge certains groupes, qui ont toujours cours dans les mêmes salles. Mais sur certains créneaux horaires, les salles servent aussi de lieux de permanence pour les profs.

Voilà un cas qui doit être modélisé par la figure B. En effet, dans cette hypothèse, il existe entre les profs et les salles deux relations de nature tout à fait différente.
D'une part, les profs peuvent accéder à une salle dans le cadre de leur permanence : c'est la relation directe entre les deux entités.
D'autre part les profs sont affectés à des groupes qui sont eux-mêmes affectés à des salles d'enseignement : c'est la relation indirecte (des profs aux groupes, et des groupes aux salles).

Opter pour la figure A serait s'interdire de pouvoir enregistrer les permanences.
Opter pour la figure C serait de surcroît ouvrir la porte au fait que chaque classe ne serait pas toujours dans la même salle.

Conclusion

Répétons-le, des trois figures présentées ci-dessus, aucune n'est « juste » ou « fausse » en elle-même. Toutes sont des modélisations pertinentes de certaines situatiosn réelles... et inadaptées à d'autres situations. Je ne peux donc que répéter : il n'y a pas de « truc » qui dispense de réfléchir à chaque problème pour trouver la solution idoine...