Mysql
 sql >> Base de données >  >> RDS >> Mysql

Meilleur moyen de stocker et de récupérer des synonymes dans la base de données mysql

N'utilisez pas une (une) chaîne pour stocker différentes entrées.

En d'autres termes :Construisez une table de mots (word_ID,word) et une table de synonymes (word_ID,synonym_ID) puis ajoutez le mot à la table de mots et une entrée par synonyme à la table de synonymes.

MISE À JOUR (3ème synonyme ajouté)

Votre table de mots doit contenir tous les mots (TOUS), votre table de synonymes ne contient que des pointeurs vers des synonymes (pas un seul mot !) ..

Si vous aviez trois mots :A, B et C, qui sont des synonymes, votre DB serait

WORD_TABLE            SYNONYM_TABLE
ID | WORD             W_ID | S_ID
---+-----             -----+-------
1  | A                  1  |  2
2  | B                  2  |  1
3  | C                  1  |  3
                        3  |  1
                        2  |  3
                        3  |  2  

N'ayez pas peur des nombreuses entrées dans la SYNONYM_TABLE, elles seront gérées par l'ordinateur et sont nécessaires pour refléter les relations existantes entre les mots.

2ème approche

Vous pourriez également être tenté (je ne pense pas que vous devriez !) d'utiliser une table qui a des champs séparés pour le mot et une liste de synonymes (ou identifiants) (word_id,word,synonym_list). Attention, cela est contraire au fonctionnement d'une BD relationnelle (un champ, un fait).