dorian53
Messages postés102Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention22 août 2005
-
8 oct. 2004 à 15:19
dorian53
Messages postés102Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention22 août 2005
-
9 oct. 2004 à 15:04
Bonjour,
Je connais la méthode Merise qui demande de n'avoir qu'une seule clef primaire par table.
Pourtant j'ai des champs internes ds ma table, autre que ma clef primaire, qui doivent etre unique et dont je voudrais qu'ils soient indéxés pour accélerer les recherches.
Prenons l'exemple d'une table MEMBRE avec 1 id et 1 mail.
L'id est ma clef primaire; mais je souhaite que le mail soit également unique et indexé.
Que dois je faire ? Déclarer 2 clefs primaires qui ne serait pas conforme (si vous me confirmez que le type primaire=index+unique).
De plus phpmyadmin, lors de la creation de la table empeche la double déclaration via des boutons radios, on est donc obligé de choisir Pimaire OU Unique OU index.
phpwankenobi
Messages postés152Date d'inscriptionjeudi 10 avril 2003StatutMembreDernière intervention18 novembre 2004 8 oct. 2004 à 16:00
Salut,
Pour moi effectivement on ne peut créer qu'une seule clé primaire, mais rien ne t'emp^che de créer un index unique en plus, ce qui équivaut à une clé primaire, sauf que la clé primaire n'accepte pas le NULL et l'index unique oui.
Si tu ne veux pas vexer Merise, tu peux normaliser à outrance, mais à ta place, je ferais un index unique sur le champ mail et basta.
dorian53
Messages postés102Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention22 août 2005 8 oct. 2004 à 16:35
Oké, merci pr la qualité de ta réponse.
Juste une précision, l'index n'est pas unique, car apres avoir tester mysql n'interdit pas les doublons, c'est donc a moi de verifier cela avant insertion :/
Mais alors je ne comprends pas pourquoi lors de la creation, phpmyadmin n'offre pas la possibilité de créer un index+unique (pr ne pas avoir 2 clefs primaires par table).
Sinon, que signifie "Texte entier" tjs lors de la création de table ?
dorian53
Messages postés102Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention22 août 2005 9 oct. 2004 à 13:29
Ok mon problème c'est tout simplement que j'ai besoin des proprietes d'une clef primaire sur un de mes champs (qui n'en n'ai pas une) et que phpmyadmin ne permet pas definir un champs unique+index.
Et on ne peux pas déclarer 2 clefs primaires dans une table :/ On peut juste former une clef primaire de 2 champs.
Je vais donc etre contraint de choisir unique ou index. Et en choisissant index je me passerai de la proprieté unique sous mysql :/
J'espere avoir été assez explicite sur ce petit détail qui a son importance.
On m'a répondu : "En fait, "UNIQUE" est un type d'index donc pas de problème."
Donc pour essayer de conclure,
Primaire = unique et indexé
Index = seulement indexé
Unique = unique et indexé
Mais alors quelle difference entre unique et clef primaire ?
Vous n’avez pas trouvé la réponse que vous recherchez ?