Identifiant et type de données [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 27-07-2006 à 11:48:28
Merci
Marsh Posté le 27-07-2006 à 11:51:11
Mario_ 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"...
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. |
J'avais pas pensé au problème des liens et de la modif du titre, c'est très exact
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
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. |
+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)
Marsh Posté le 27-07-2006 à 11:57:50
chani_t a écrit : +1... |
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
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
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.