Maison >base de données >tutoriel mysql >Comment optimiser la structure d'une base de données multilingue pour un stockage et une récupération efficaces ?

Comment optimiser la structure d'une base de données multilingue pour un stockage et une récupération efficaces ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 08:41:02853parcourir

How to Optimize Multilingual Database Structure for Efficient Storage and Retrieval?

Optimisation de la structure de base de données multilingue

Cette question explore la structure de base de données optimale pour stocker des données multilingues tout en évitant le besoin de modifications de table ou de duplication de données. Trois approches sont présentées :

Approche 1 :

Cette approche combine les données dans un seul tableau avec des colonnes spécifiques à la langue, telles que :

[ products ]
id (INT)
name-en_us (VARCHAR)
name-es_es (VARCHAR)
name-pt_br (VARCHAR)
description-en_us (VARCHAR)
description-es_es (VARCHAR)
description-pt_br (VARCHAR)
price (DECIMAL)

Limitations : Nécessite une modification du tableau pour chaque nouvelle langue ajouté.

Approche 2 :

Cette approche crée des tableaux séparés pour chaque langue, tels que :

[ products-en_us ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)

[ products-es_es ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)

Limitations : Champ de prix dupliqué dans chaque tableau de langues. Nécessite la création de nouvelles tables pour chaque nouvelle langue.

Approche 3 (recommandée) :

Cette approche utilise une table neutre avec une table traduite séparée avec une structure comme :

[languages]
id (INT PK)
code (VARCHAR)

[products]
id (INT PK)
neutral_fields (MIXED)

[products_t]
id (INT FK, PK)
language (INT FK, PK)
translated_fields (MIXED)

Avantages :

  • Évite les modifications de tableau : Pas besoin de modifier la structure du tableau pour les nouvelles langues.
  • Élimine la duplication des données : Le champ prix n'est stocké qu'une seule fois au neutre table.
  • Performance : La récupération de données multilingues est efficace à l'aide d'un seul LEFT JOIN.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn