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.