les 2 propositions ne sont pas très "propres"... En tout cas, la première est à exclure!
Ce que tu souhaites, c'est du HIGH LEVEL en conception.
Vite fait, je le vois comme ça :
- TypeEnveloppe[id_TypeEnv, Libelle] --> (1:Normal, 2:Spé1, 3:Spé2)
=> permet d'ajouter d'autre type d'enveloppe dans le temps
- Enveloppe[ id_Env, id_Groupe_de_recherche, year, id_TypeEnv, MontantBase, ??MontantUtilise??à voir ]
=> Permet de créer la base de tout type d'enveloppe pour tous les groupes de recherches pour une année donnée
- EnveloppeColonne [id_EnvCol, id_Env, year, Libelle, TypageColonne]
=> permet de créer tout type de structure pour une enveloppe donnée pour une ANNEE donnée
- GroupeRecherche[id_Groupe_de_recherche, Libelle]
=> Permet de creer des groupes de recherche
- GroupeRechercheEnveloppe[id_Groupe_de_recherche, id_Env]
=> Permet la liaison n:m entre groupe & enveloppe => dans le cas ou un jour une enveloppe spéciale serait à partager avec 3 groupe de recherches au lien de la totalité des groupe
- Data : Table qui stocke en ligne les données
avantage de ne pas utiliser de place lorsque certaines colonnes ne sont pas utilisées...
Ensuite créer des vues de bases pour reconstruire les tables d'enveloppe à structures variables.
En esperant que cela puisse t'ouvrir l'esprit à la conception avancée... des cas tordus! :-)