Question simple pour certain.
Avant toutes choses, j'utilise MySQL 5.
J'aimerais interdire l'homonymie sur les champs ID_Personnel, B_Date, AM de la table Passage. Pour éviter de devoir gérer ceci par programmation, je me suis dis que je devrais mettre une contrainte au niveau de mon serveur de BD.
Voici ce que je propose de faire, est la bonne solution? ou y a t il mieux? et plus performant?
J'ai du mal à faire la différence entre clé et index. Je sais que si je met un index sur les 3 choix concernés ceci améliorera l'efficacité de mes requêtes, mais en contrepartie le systèmes devra gérer une table d'index plus grande que les données elles même. Mais en plus ceci ne me permettra pas de gérer les homonymes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE `Passage` ( `ID_Passage` int(11) NOT NULL auto_increment, `ID_Personnel` smallint(6) NOT NULL, `B_Date` date NOT NULL, `AM` tinyint(1) NOT NULL, PRIMARY KEY (`ID_Passage`), UNIQUE KEY `Ma_Cle` (`ID_Personnel`,`B_Date`,`AM`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Mais la clé là dedans, je ne vois pas bien si cela occupe de la place à long terme, améliore ou réduit les performances... je ne sais pas trop.
Merci de m'éclairer
Partager