Bonsoir Age_of_Aquarius,
Représenter les clés alternatives n’est pas intuitif avec Workbench. On pallie graphiquement avec ses propres mickeys (clé verte ou autre artifice)...
Mais dessiner ne suffit pas... Pour produire la clé alternative {Emprunteur_Id, PeriodeEmprunt} pour la table EMPRUNT_HISTO, il faut passer par quelque chose de pas très (même pas du tout) relationnel, à savoir un index de type UNIQUE, chose qui est plutôt du niveau physique, mais bon, on ne va pas faire la fine bouche...
Vous sélectionnez l’onglet « Indexes » et définissez à votre guise un index de ce type (EMPRUNT_HISTO_UNIQUE dans l’exemple ci-dessous) en cochant les cases qui vont bien pour les colonnes :
Dans le cas de la table EMPRUNT_EN_COURS (voir ici), on pouvait cocher une case UNIQUE (onglet « Columns ») parce que la clé alternative ne comportait qu’une colonne, mais manifestement, Workbench est ainsi câblé :
[Colonne de table]----0,1----(Cocher)----0,1----[Case UQ] !
Bon, passons...
Le code SQL produit par l’outil est le suivant en ce qui concerne l’index EMPRUNT_HISTO_UNIQUE :
UNIQUE INDEX `EMPRUNT_HISTO_UNIQUE` (`EmprunteurId` ASC, `PeriodeEmprunt` ASC)
En dehors de MySQL (par exemple avec DB2, SQL Server, Oracle, etc.), en conformité avec la norme SQL, il faudra remplacer ce code par :
CONSTRAINT UNIQUE EMPRUNT_HISTO_UNIQUE (EmprunteurId, PeriodeEmprunt)
Ceci vaut du reste pour la table EMPRUNT_EN_COURS, pour laquelle il faudra remplacer :
UNIQUE INDEX `EmprunteurId_UNIQUE` (`EmprunteurId` ASC)
Par :
CONSTRAINT UNIQUE EmprunteurId_UNIQUE (EmprunteurId)
Sans oublier de faire le ménage dans les index faisant double emploi (1res colonnes participant à la fois à une clé candidate (primaire ou alternative) et à une clé étrangère).
Partager