Bonjour Jeobs,
Sujet toujours intéressant qui revient régulièrement.
Suggestion pour la partie concernée :
1 2 3 4 5 6 7 8 9
| Organisme -0,n---[Inscrire]---0,n- InscriptionDetail -1,1---[Détailler]---1,n- InscriptionEntete -1,1---[Concerner]---0,1- Session
| | |
1,n | |
| | |
[Composer] (XT) |
| | |
0,n | |
| | |
Enfant ----0,n---[Inscrire]---0,n-------+ |
donnant :
Session(IdSession, ...)
Organisme(IdOrganisme, Nom, ...)
Enfant(IdEnfant, Nom, ...)
Organisme_Enfant(#IdOrganisme, #IdEnfant, ...)
InscriptionEntete(IdInscriptionEntete, #IdSession, ...)
InscriptionDetail(#IdInscriptionEntete, #IdInscriptionDetail, ...)
InscriptionDetail_Organisme(#IdInscriptionDetail, #IdOrganisme, DateInscription, ...)
InscriptionDetail_Enfant(#IdInscriptionDetail, #IdEnfant, DateInscription, ...)
L'idée est de passer par une entité InscriptionDetail qui distribue sa clé primaire, soit à InscriptionDetail_Organisme, soit à InscriptionDetail_Enfant, mais pas aux deux.
Quant au contrôle XT, un trigger sera nécessaire :
- interdiction d'inscrire à une session, un enfant faisant partie d'un organisme déjà inscrit à cette même session ;
- interdiction d'inscrire à une session, un organisme dont au moins un enfant de cet organisme est déjà inscrit à cette même session ;
- interdiction d'inscrire à une session, deux organismes avec des enfants en commun.
Peut-être une base de travail ?
Partager