Buona progettazione della tabella del database per l'archiviazione di versioni localizzate dei dati [chiuso]

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

Domanda

Sto cercando di progettare alcune tabelle per memorizzare alcuni dati, che devono essere convertiti in lingue diverse in seguito. Qualcuno può fornire alcune "best practice"? o linee guida per questo?

Grazie

È stato utile?

Soluzione

Supponiamo che tu abbia una tabella di prodotti simile a questa:

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

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

Quindi ti unisci a product_id = product.id e dove locale = 'en-US'

ovviamente questo ha un impatto sulle prestazioni, poiché ora è necessario un join per ottenere il nome e la descrizione, ma in seguito consente un numero qualsiasi di locali.

Altri suggerimenti

Credo che ulteriori informazioni su ciò che stai facendo sarebbero utili. Puoi fornire alcuni esempi dei dati? E cosa intendi per dinamico? Che ci saranno molti dati inseriti nel tempo e molte modifiche ai dati o che i dati devono essere disponibili solo per un breve periodo di tempo.

In generale, dovresti probabilmente guardare un genitore con dati comuni non localizzati e una tabella figlio con i dati localizzati e la chiave della lingua. Se per dinamica, intendi che cambia frequentemente, potresti voler dare un'occhiata all'utilizzo di trigger e qualcosa come una bandiera "translationRequired" per contrassegnare le cose che hanno bisogno di traduzione dopo aver apportato una modifica.

Puoi descrivere la natura dei "dati dinamici"?

Un modo per implementarlo sarebbe avere 3 diverse tabelle:

  • Tabella delle lingue
    • Questa tabella memorizza la lingua e una chiave:
    [1, English], 
    [2, Spanish]
  • Tabella di definizione dei dati
    • Quando i dati dinamici vengono immessi per la prima volta, creare un record in questa tabella con e identificativo dei dati:
      [1, 'Data1'], 
      [2, 'Data2']
  • Tabella Data_Language
    • Questa tabella collegherà la lingua, la definizione dei dati e la traduzione
      So: [Data_Language, Data_Definition, Language, Translation]
          [1, 1, 1, 'Red']
          [2, 1, 2, 'Rojo']
          [3, 2, 1, 'Green']
          [4, 2, 2, 'Verde']

          etc ...

Quando si immettono i dati dinamici, creare il record "inglese" predefinito e tradurlo a piacere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top