L'objectif principal est de savoir si un VProj est réservé ou non. Il y a une manière très simple de le modéliser : si on a une association entre VProj et Créneau+Date, on peut dire que, pour un VProj et un Créneau+Date donnés, lorsque l'occurrence de l'association existe, c'est que le VProj est réservé, sinon c'est qu'il est disponible.
Créneau+Date peut se modéliser en considérant qu'un Créaneau n'a pas d'existence seul, c'est simplement un numéro d'ordre dans une journée (identification relative). Pour l'identifier complètement (identification absolue) il doit être complété d'une Date. Créneau est donc une entité identifiée relativement à une Date : c'est ce qu'on appelle une entité
faible.
L'Entité Créneau pourrait ressemble à ça :
1 2 3 4 5
|
1 8h-9h
2 9h-10h
3 10h-11h
... |
Pour pouvoir identifier un créneau concrètement, il faut qu'il ressemble à ça :
1 2 3 4 5 6 7 8 9
|
15/04/2008 1 8h-9h
15/04/2008 2 9h-10h
15/04/2008 3 10h-11h
...
16/04/2008 1 8h-9h
16/04/2008 2 9h-10h
16/04/2008 3 10h-11h
... |
On le modélise :
: Créneau :--1,1----( relatif à )----0,n->[ Date ]
En formalisme EA, Créneau est en traits pointillés. Ceci sous-entend que l'identifiant absolu de Créneau est idDate+NumCréneau.
Il n'y a plus qu'à associer Créneau et VProj :
[ VProj ]--0,n----( Réservation )----0,n--: Créneau :
Comme prévu, la date de réservation (date à laquelle le professeur a effectué l'action de réserver) peut se situer dans l'association Réservation.
La réservation d'un VProj donné à un créneau donné, ne peut avoir été faite que par un seul Prof. Donc :
( Réservation )--1,1----( est effectuée )----0,n->[ Prof ]
Modèle 1
"( est effectuée )" est une association (plus exactement une CIF) entre une entité et une autre association. Impossible à modéliser avec les outils existants. Il faut donc procéder de manière artificielle en créant une pseudo entité Réservation :
[ Réservation ]--1,1----( a-un )----0,n->[ VProj ]
[ Réservation ]--1,1----( a-un )----0,n->: Créneau :
[ Réservation ]--1,1----( est effectuée )----0,n->[ Prof ]
Modèle 2
On peut se rapprocher du modèle 1 en identifiant Réservation relativement à VProj et Créneau. idRéservation sera alors remplacé par idVProj+(idDate+NumCréneau). Le MLD dérivé de ce 3e modèle sera alors identique à celui du modèle 1.
Dans les 1er et 3e modèles, il est plus simple que dans le modèle 2 de déterminer si un Vidéo-proj est réservé ou non : une fois qu'on a le VProj, la Date et le Créneau, il suffit de vérifier par requête si la ligne correspondante existe ou non dans la table issue de l'association (ou pseudo entité) Réservation, et le tour est joué ! Si on a un modèle de VProj et non pas le numVProj, alors il faut faire la même requête mais pour chaque VProj correspondant à ce modèle.
Voila ! Simple, non ?
JPhi33
Partager