|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() |
Bonjour,
J'ai actuellement une base avec une gestion des évènements dans la table events. Des personnes peuvent s'inscrire à un ou plusieurs évènements. La relation étant n-n, ces inscriptions sont stockées dans une table enrolments. Je travaille sur la mise en place de la récurrence d'évènements. Pour ce faire je vais créer une table Series avec les colonnes adéquates (je peux les données pour la postérité) tandis que les exceptions seront reprises dans la table events. Au final j'ai ma table events qui contient deux nouvelles colonnes SerieID et OccurenceID pour me permettre de gérer les exceptions. Cela donne : Events :
Series:
Enrolments
Jusque là tous va bien sauf que... je dois adapter mes inscriptions pour gérer le cas des inscriptions à toute une série, une inscription à une exception, une désinscription à une occurence de la série. 1ère possibilité très simple : J'ajoute la notion SerieID et OccurenceID dans la table enrolment. Je démultiplie donc l'alimentation de cette table. C'est transparent pour l'utilisateur car chaque action sera traduite par un ou plusieurs accès à cette table. 2ème possibilité : je sèche Avez-vous un retour d'expérience ? ou un conseil ? Merci
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
|
|
00
|
|
|
#2 |
![]() ![]() |
2ème possibilité un peu plus réfléchie : J'ajoute la notion SerieID et OccurenceID et un flag désinscription dans la table enrolment.
Cela me permet d'afficher les inscriptions - les désinscriptions spécifiques. Je continue à creuser mais si qqun à une meilleure idée je sus preneur.
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
Bonjour Emmanuel,
Pour récapituler, dans un premier temps, tu as bien : ==> non ? Ensuite, si j'ai bien compris, ton souci provient du fait qu'un utilisateur peut s'inscrire à une série (d’évènements), mais, parfois, en excluant certains évènements de cette série (ou même, peut-être, en incluant certains évènements qui n'appartiennent pas à cette série). C'est bien cela ?
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#4 |
![]() ![]() |
Bonjour Richard,
Hier j'avais uniquement cela : Une inscription se fait pour un évènement Code :
Events -0,n---[Enrollments]---0,n- Utilisateur Aujourd'hui j'ai ajouté ces notions : Une série est une récurrence d'évènements : Code :
Series -1,1---[Récurrent]---0,1- Events Une Occurence est une exception dans la série (modification de l'évènement ou suppression de l'évènement) à telle date. Code :
Series -0,n---[Contient]---1,1- Occurences Un utilisateur peut s'inscrire ou se désinscrire :
C'est mieux en explication ?
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
Bonjour Emmanuel,
Beaucoup plus clair, en effet : je pensais que les "Series" étaient un ensemble d'"Events" différents. Ce que tu appelles "Series" est donc, si j'ai bien compris, un ensemble de dates pour un même évènement. Dès lors, toujours si j'ai bien compris, je ne comprends pas pourquoi tu passes par une entité "Serie". Tu aurais donc : Code :
Event(IDEvent, ...)L'"Event" étant retrouvé via IDEvent de "Occurence". Non ? NB : il est d'usage de nommer les entités au singulier (nous nous doutons que les tables contiendront plusieurs enregistrements, en final).
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#6 | ||
![]() ![]() |
Bon je vais devoir te donner le contenu de Serie
![]() En fait Serie est ce qui permet de déterminer la récurrence de mon évènement : toutes les semaines, tous les 14 de chaque mois, tous les 10 jours... Code :
Donc hormis pour les occurences annulées ou modifiées que nous allons retrouver dans une entité Occurence, les occurences standard n'ont pas d'existences physiques... d'où la problématique soulevée avec une inscription à une partie de la série (donc sur des Occurences qui n'existe pas en tant que tel). Ta proposition convient mais le nombre de lignes risque de devenir très conséquent dans la table occurence ainsi que dans la table inscriptions. Pour être franc avec toi, j'avais pensé à cette modélisation qui est simple mais je tiquais sur cette volumétrie. Maintenant si je ne trouve pas d'alternative je finirai par revenir à ce scénario nickel en terme de base de données. pour ton aide et tes conseils
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
||
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
On avance...
: Serie est donc une propriété (existante ou pas) d'un Event.Suggestion : Code :
User(IDUser, ...)
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
10
|
|
|
#8 |
![]() ![]() |
C'est toujours plus simple avec deux cerveaux
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
Si cela te convient, n'oublies pas le bouton
.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#10 | ||
![]() ![]() |
Bon il me reste des trous dans la raquette :
- Avec le modèle présenté, on ne gère pas les exceptions d'évènement : l'entité Occurrence (nommée SerieEventExclusion dans le modèle). Encore çà, çà va il suffit de l'ajouter. - Comment peut-on modéliser la gestion des inscriptions à une occurrence. Le modèle ci dessous est OK ? Code :
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
||
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
Bonjour Emmanuel,
Hum... il me semble comprendre que tu as besoin d'un calendrier par évènement... mais que tu souhaites t'en passer. Et pour cela, tu souhaites le recalculer à chaque besoin. Cela me semble être une galère... et que dire si une Serie change alors qu'elle contient des inscriptions (une Serie qui passe de "tous les 2ème mardis du mois" à "tous les 2ème mercredis du mois")... En bref, tu comptes tout résoudre par du code : c'est faisable, mais galère... Juste pour comprendre, en règle générale :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#12 | |||
![]() ![]() |
Citation:
Citation:
Citation:
Donc le modèle que tu présentes avec mon ajout de table est bon. Pour une inscription à une serie, on va créer en base autant d'inscription que d'occurence de la série, en cas d'annulation d'une occurence de la série on peut supprimer ses inscriptions... Seul bémol la volumétrie dans la table enrolments mais çà je pense qu'une base de données c'est fait pour çà non
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
|||
|
|
00
|
|
|
#13 | |||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
Bonjour Emmanuel,
Citation:
C'est pour cette raison que je ne vois pas pourquoi, compte tenu de toutes les précisions que as apportées, tu ne passes pas par un calendrier classique. En effet, la structure de ta table Serie est, en fait, la liste des champs d'un formulaire de saisie : Code :
User(IDUser, ...)
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|||
|
|
00
|
|
|
#14 |
![]() ![]() |
Merci pour ton aide, je vais voir comment intégrer ta proposition dans mon existant
A demain Et bon Dimanche !
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
|
|
00
|
|
|
#15 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
J'ajoute que pour obtenir une simple liste des inscriptions d'un User à un Event, avec les dates précises, tu seras obligé de passer par une fonction de calcul de ces dates précises via Serie pour chaque couple User/Event... pas simple... et, sans doute, long...
Alors que la génération d'un calendrier à la validation d'un couple User/Event, via le formulaire de saisie (Serie) implique un seul traitement pour ce couple.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
10
|
|
|
#16 | ||
![]() ![]() |
Ci-dessous mon idée de modèle pour prendre en compte la possibilité de surcharger une occurence de ma série.
Code :
Event(IDEvent, Nom, Date, ...) Serie(IDSerie, IDEvent, ...) => volonté de ma part d'isoler les données complémentaire de récurrence. Inscription(#IDInscription, #IDUser, #IDEvent, DateInscription, ...) ==> index unique sur {#IDUser, #IDEvent} Comme mes surcharges éventuelles d'évènement se font dans la table Event, une inscription ne se fait que sur un évènement. Avec la rélation surchage qui contient la donnée N°Occurence, j'obtiens la table Event(IDEvent, Nom, Date, ..., IDSerie, numoccurence) Donc au final pour la prise en compte de la récurrence : création de la table Serie et ajout de deux colonnes dans la table existante Event. Puis adaptations des traitements. Avec mes cas d'utilisation j'ai : Un gestionnaire crée un évènement :
Un gestionnaire modifie un évènement :
Un utilisateur peut s'inscrire ou se désinscrire :
Grand merci pour ton aide
__________________
Emmanuel Lecoester => On recrute des rédacteurs WinDev
|
||
|
|
10
|
Copyright © 2000-2013 - www.developpez.com