[MySQL] Identifiant et type de données

Identifiant et type de données [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 27-07-2006 à 11:26:40    

Bonjour,
 
Je débute un projet perso de pseudo-wiki en j2ee sous Mysql. Jusque là, je référenciais les articles par un identifiant entier unique.
Par exemple, un article qui aurait pour titre "Eléments de réponse" aurait été codé sous la forme :

id    title                 content
1     Eléments de réponse   blabla


 
Pour pouvoir éviter les doublons de titre, je comptais mettre un "intern_title" qui donnerait par exemple elements_de_reponse pour le titre de cet article. Ainsi, quelqu'un qui créerait un article avec pour titre "eléments de REPONSE" se verrait refuser l'ajout de son article après un simple traitement (il serait considéré comme équivalent à l'"intern_title" de l'article 1).
 
Donc ça donnerait :

id    intern_title         title                   content
1     elements_de_reponse   Eléments de réponse    blabla


 
Le truc c'est que maintenant, au moins sur le plan théorique, intern_title pourrait jouer le rôle de clé unique pour l'article. Mais est-ce une bonne idée sous Mysql ?
 
Je n'ai pas besoin de l'auto-incrémentation (puisque je génèrerais moi-même cette clé) mais puis-je utiliser une clé VARCHAR de longueur indéfinie (ou du moins suffisamment longue) pour permettre d'utiliser l'intern_title en temps que clé primaire de la table ? N'y aura-t-il pas des risques de perte de vitesse de l'appli à l'accès en particulier ?
 
Merci d'avance :jap:

Message cité 1 fois
Message édité par Mario_ le 27-07-2006 à 11:27:26

---------------
Soyons ouverts d'esprit, mais pas au point de laisser notre cerveau s'enfuir.
Reply

Marsh Posté le 27-07-2006 à 11:26:40   

Reply

Marsh Posté le 27-07-2006 à 11:37:03    

oui

Reply

Marsh Posté le 27-07-2006 à 11:48:28    

Merci :jap:


---------------
Soyons ouverts d'esprit, mais pas au point de laisser notre cerveau s'enfuir.
Reply

Marsh Posté le 27-07-2006 à 11:51:11    

Mario_ a écrit :

id    intern_title         title                   content
1     elements_de_reponse   Eléments de réponse    blabla


 
Le truc c'est que maintenant, au moins sur le plan théorique, intern_title pourrait jouer le rôle de clé unique pour l'article. Mais est-ce une bonne idée sous Mysql ?
 
Je n'ai pas besoin de l'auto-incrémentation (puisque je génèrerais moi-même cette clé) mais puis-je utiliser une clé VARCHAR de longueur indéfinie (ou du moins suffisamment longue) pour permettre d'utiliser l'intern_title en temps que clé primaire de la table ? N'y aura-t-il pas des risques de perte de vitesse de l'appli à l'accès en particulier ?
 
Merci d'avance :jap:


 
Le vrai pb c'est que si ta table est liée à une autre, le lien se fait par recopie de ta clef primaire comme clef étrangère dans l'autre table. Si ta clef est une chaîne de caractères, là tu auras une réelle perte de perfs.
 
Par ailleurs, une règle de base veut qu'une clef primaire soit indépendante des autres champs. Or là, ta clef potentielle "intern_title" est issue d'un algo sur le champ "title". Que se passera-t-il le jour où le contenu est modifié ???
 
A mon avis, vaut mieux garder ta clef primaire telle qu'elle et n'utiliser "intern-title" que pour gérer le pb des doublons sur "title"...

Reply

Marsh Posté le 27-07-2006 à 11:55:45    

Sve@r a écrit :

Le vrai pb c'est que si ta table est liée à une autre, le lien se fait par recopie de ta clef primaire comme clef étrangère dans l'autre table. Si ta clef est une chaîne de caractères, là tu auras une réelle perte de perfs.
 
Par ailleurs, une règle de base veut qu'une clef primaire soit indépendante des autres champs. Or là, ta clef potentielle "intern_title" est issue d'un algo sur le champ "title". Que se passera-t-il le jour où le contenu est modifié ???
 
A mon avis, vaut mieux garder ta clef primaire telle qu'elle et n'utiliser "intern-title" que pour gérer le pb des doublons sur "title"...


J'avais pas pensé au problème des liens et de la modif du titre, c'est très exact [:figti]
Bon ben au final, je vais peut-être en rester aux deux champs title et intern_title et à l'identifiant indépendant. En mettant peut-être un index sur intern_title.
 
Merci :)


Message édité par Mario_ le 27-07-2006 à 11:56:11

---------------
Soyons ouverts d'esprit, mais pas au point de laisser notre cerveau s'enfuir.
Reply

Marsh Posté le 27-07-2006 à 11:56:04    

Sve@r a écrit :

Le vrai pb c'est que si ta table est liée à une autre, le lien se fait par recopie de ta clef primaire comme clef étrangère dans l'autre table. Si ta clef est une chaîne de caractères, là tu auras une réelle perte de perfs.
 
Par ailleurs, une règle de base veut qu'une clef primaire soit indépendante des autres champs. Or là, ta clef potentielle "intern_title" est issue d'un algo sur le champ "title". Que se passera-t-il le jour où le contenu est modifié ???
 
A mon avis, vaut mieux garder ta clef primaire telle qu'elle et n'utiliser "intern-title" que pour gérer le pb des doublons sur "title"...


 
+1...
 
une bonne clef primaire numérique, (bigint si t'as vraiment beaucoup de lignes prévues), et le lien entre deux tables se fais facilement et rapidement...( et pas besoin de gérer des doublons potentiel)

Reply

Marsh Posté le 27-07-2006 à 11:57:50    

chani_t a écrit :

+1...
 
une bonne clef primaire numérique, (bigint si t'as vraiment beaucoup de lignes prévues), et le lien entre deux tables se fais facilement et rapidement...( et pas besoin de gérer des doublons potentiel)


Peu probable, dans mon idée ce n'est pas voué à être un wiki "encyclopédique" donc un int de la "bonne taille (j'ai mis une taille 10 jusque là mais c'est plus par défaut qu'autre chose) devrait amplement me convenir.
 
Merci de vos réponses :jap:


---------------
Soyons ouverts d'esprit, mais pas au point de laisser notre cerveau s'enfuir.
Reply

Sujets relatifs:

Leave a Replay

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