/ / Est-il possible de créer une “signature” d'une chaîne pour s'assurer qu'elle est unique? Ou devrais-je utiliser un index de base de données unique? - mysql, hash, unique, signature numérique, clé unique

Est-il possible de créer une «signature» d'une chaîne pour s'assurer qu'elle est unique? Ou devrais-je utiliser un index de base de données unique? - mysql, hash, unique, signature numérique, clé unique

Je construis un site Web. Les utilisateurs peuvent soumettre "Titre", qui est une chaîne de caractères Unicode (pas seulement en anglais).

Lorsqu'un utilisateur soumet un "Titre", je veux voir s'il est déjà dans la base de données (MySQL). Si c'est le cas, je viens de mettre à jour l'enregistrement existant. S'il s'agit d'un nouveau "Titre", je crée un nouvel enregistrement pour celui-ci.

Je suppose que la méthode standard pour tester l'unicité consiste à créer simplement un index sur la colonne "Titre". Mais je suis préoccupé par la taille d’un tel index car "Title" pourrait être assez long.

Je me demande donc s’il est possible de créer une "signature" de "Titre" et de l’utiliser pour tester le caractère unique. Existe-t-il une fonction de hachage qui passerait d'une chaîne unicode à une valeur unique?

Tous les indicateurs seront grandement appréciés. Merci.

Réponses:

4 pour la réponse № 1

La réponse simple est d'utiliser l'une des fonctions de hachage MySql (MD5 SHA1) pour créer un hachage de chaque titre et le stocker à côté du titre lui-même.

Vous pouvez ensuite indexer la valeur hachée, ce qui produira un meilleur index plus rapide.

Celles-ci sont essentiellement des fonctions cryptographiques et consomment beaucoup de ressources processeur, mais votre environnement de langage peut fournir un hachage plus simple et plus rapide, tel que crc32.

Cela vaut également la peine de mettre votre "Titre" à travers un nettoyage avant le hachage, par exemple. contraignez plusieurs espaces en un seul espace, pliez tous les caractères en minuscules, supprimez les signes de ponctuation, etc.

Donc, "STACKOVERLOW IS GREAT ......" et "stackoverflow is great" donnent le même hachage.