Bonjour,
J'ai une question conceptuelle. Je vais essayer d'illustrer la chose avec un exemple simple:
J'ai 3 tables:
ENTREPRISE (clé primaire NUM_ENTREPRISE)
SERVICE (clé primaire NUM_SERVICE, clé étrangère NUM_ENTREPRISE)
SALARIE (clé primaire NUM_SALARIE, clé étrangère NUM_SERVICE, NUMERO_CARTE )
Un salarié fait partis d'un service, qui fait partis d'une entreprise. Un salarié à un numéro de carte.
Mon problème est le suivant: je souhaite avoir un numéro de carte unique par entreprise.
Le problème, c'est que si dans ma table SALARIE je met une contrainte d'unicité sur [NUM_SERVICE+NUMERO_CARTE], ça me garantira un numéro unique par service, mais pas par entreprise.
La solution serait de créer une contrainte unique dans la table SALARIE sur le champ NUMERO_CARTE et sur le champ parent NUM_ENTREPRISE, mais c'est bien évidemment impossible.
Une solution simple serait d'ajouter le champ NUM_ENTREPRISE dans la table SALARIE, mais ça ferait double emploi et je ne le souhaite pas.
Avez-vous une idée?
Merci d'avance!
PS: Ma structure est bien évidemment beaucoup plus complexe, il s'agit là d'un exemple pour illustrer le problème.
Partager