[9i][Best Practice] Conception
Bonjour à tous.
Un bête problème de conception, pour lequel j'ai 2 solutions et je ne sais laquelle choisir.
Soit une architecture de tables pour le domaine RH (en * les champs de la clé) :
Code:
1 2 3 4 5
|
Identité :
- nom
- prénom
* matricule |
Code:
1 2 3 4 5
|
Revenu :
* matricule
* mois
- revenu |
Code:
1 2 3 4 5 6
|
Affectation :
* matricule
* mois
* service
- coefficient |
On se fiche dans le problème présent de la table Identité, je ne l'ai mise là que pour la forme.
Mon problème est dans la relation entre Revenu et Affectation.
En effet, un individu a UN SEUL revenu par mois (donc la clé de Revenu est {matricule, mois}).
Mais un individu peut avoir plusieurs affectations par mois : il y a un coefficient par service. par exemple il peut être à 0,6 sur la RH et à 0,4 sur le Commercial.
Donc je créé une ligne pour chaque affectation dans ma table des Affectations.
Jusque là tout va bien. MAIS, car il y a un MAIS, la RH voudrait aussi pouvoir
1) connaître le service sur lequel l'individu est affecté en majorité
2) pouvoir sortir les revenus de l'individu affectés à 100% à ce service là.
Ce qui veut dire que pour Mr TOTO, matricule 001 qui en janvier a gagné 1000€ par mois et qui est affecté à 0,6 à RH et 0,4 au Commercial ils veulent pouvoir faire :
Citation:
TOTO 001 janvier RH 600 €
TOTO 001 janvier Commercial 400 €
et
Citation:
TOTO 001 janvier RH 1000 €
Bon soit, ça ne se discute pas.
Mon problème est le suivant : soit je rajoute une ligne dans ma table des affectations qui contient le service majoritaire avec un coefficient de 1 et un indicateur comme quoi c'est le majoritaire, soit je fait une autre table à côté qui ne contient QUE les services majoritaires. Ce qui donnerait ça :
Code:
1 2 3 4 5 6 7
|
Affectation :
* matricule
* mois
* service
* majoritaire
- coefficient |
Citation:
MATRICULE MOIS SERVICE MAJORITAIRE COEFFICIENT
001 janvier RH 0 0,6
001 janvier Commercial 0 0,4
001 janvier RH 0 1
ou ça :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Affectation :
* matricule
* mois
* service
- coefficient
Affectation_majoritaire :
* matricule
* mois
- service |
Citation:
MATRICULE MOIS SERVICE COEFFICIENT
001 janvier RH 0 0,6
001 janvier Commercial 0 0,4
MATRICULE MOIS SERVICE
001 janvier RH
Quels sont les pour et les contre à votre avis ?
Je serais plutôt pour la 1ere solution : plus simple, plus maintenable, 1 seule table mais une clé plus longue, qui intègre 2 visions différentes de la donnée en 1 seule fois.