[Résolu] Deux champs uniques

Deux champs uniques [Résolu] - SQL/NoSQL - Programmation

Marsh Posté le 17-10-2010 à 19:49:03    

Bonjour,
Je débute avec Mysql je sais à peu près m'en servir mais là je voudrait faire les choses bien. J'ai une table comme cela:
 
ID_utilisateur | ID_propriete | Valeur
 
Voilà, cette table peut éventuellement contenir de nombreuses entrées et je cherche le moyen de rendre un couple ID_utilisateur - ID_propriete unique, que Mysql sql me renvoi une erreur si j'essaye de rentrer une entrée avec un couple déjà existant. J'aimerais par la même occasion rendre performant (rapide) la recherche par couple, y'a t'il quelque chose à faire ? J'ai entendu parler d'index mais je ne sait pas à quoi sa sert.
 
Merci d'avance.


Message édité par Pommesky le 17-10-2010 à 20:25:43
Reply

Marsh Posté le 17-10-2010 à 19:49:03   

Reply

Marsh Posté le 17-10-2010 à 19:53:20    

tu stockes dans un champ supplémentaire le couple concaténé avec un séparateur, et tu crée un index unique sur ce champ
 
comment fonctionne un index sous mysql : http://dev.mysql.com/doc/refman/5. [...] dexes.html
 
créer un index : http://dev.mysql.com/doc/refman/5. [...] index.html

Reply

Marsh Posté le 17-10-2010 à 20:10:23    

déjà, merci de la réponse, il y a moyen de le faire automatiquement dans la BDD ou c'est au moment de l'enregistrement des donnée que je doit le vérifier avec code ?

Reply

Marsh Posté le 17-10-2010 à 20:15:13    

non un index unique permet de rejeter une ligne automatiquement lors d'une tentative d'insertion ou de mise à jour si la valeur existe déjà
 
ca te ressortira une erreur qu'il faudra gérer dans ton code

Reply

Marsh Posté le 17-10-2010 à 20:18:58    

ok merci bien alors !

Reply

Marsh Posté le 17-10-2010 à 21:53:47    

A priori, tu peux directement créer la clé (donc un index) sur les 2 colonnes, pas la peine de définir une colonne supplémentaire :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed