Bonne conception des tables de base de données pour le stockage des versions localisées des données [fermé]

StackOverflow https://stackoverflow.com/questions/133313

Question

J'essaie de concevoir des tables pour stocker des données, qui doivent ensuite être converties en différentes langues. Quelqu'un peut-il fournir des "meilleures pratiques"? ou des directives pour cela?

Merci

Était-ce utile?

La solution

Supposons que vous ayez une table de produits ressemblant à ceci:

Products
----------
id
price

Products_Translations
----------------------
product_id
locale
name
description

Ensuite, vous venez de rejoindre product_id = product.id et où locale = 'en-US'

bien sûr, cela a un impact sur les performances, car vous avez maintenant besoin d’une jointure pour obtenir le nom et la description, mais cela permet un nombre quelconque de paramètres régionaux ultérieurement.

Autres conseils

Je pense qu’il serait utile d’avoir plus d’informations sur ce que vous faites. Peux-tu donner quelques échantillons des données? Et qu'entendez-vous par dynamique? Qu'il y aura beaucoup de données insérées au fil du temps et beaucoup de changements dans les données ou que les données doivent seulement être disponibles pendant une courte période.

En général, vous devriez probablement rechercher un parent avec des données communes non localisées et une table enfant avec les données localisées et la clé de langue. Si, par dynamique, vous voulez dire que cela change fréquemment, vous voudrez peut-être examiner l'utilisation de déclencheurs et de quelque chose comme un indicateur 'translationRequired' pour marquer les éléments nécessitant une traduction après une modification.

Pouvez-vous décrire la nature des "données dynamiques"?

Une façon de le mettre en œuvre serait d’avoir 3 tables différentes:

  • Table des langues
    • Cette table stockera la langue et une clé:
    [1, English], 
    [2, Spanish]
  • Table de définition de données
    • Lorsque les données dynamiques sont entrées pour la première fois, créez un enregistrement dans cette table avec un identifiant pour les données:
      [1, 'Data1'], 
      [2, 'Data2']
  • Table de langage de données
    • Ce tableau relie la langue, la définition des données et la traduction
      So: [Data_Language, Data_Definition, Language, Translation]
          [1, 1, 1, 'Red']
          [2, 1, 2, 'Rojo']
          [3, 2, 1, 'Green']
          [4, 2, 2, 'Verde']

          etc ...

Lorsque les données dynamiques sont entrées, créez l’enregistrement par défaut en anglais, puis effectuez la traduction à votre guise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top