2012-07-25 18 views
6

Eventuali duplicati:
Schema for a multilanguage databaseCome memorizzare dati multilingue?

Sto costruendo un'applicazione web molto impegnato che ha dati multilingue. Tutti questi dati sono memorizzati in un database MySQL. Qual è il modo migliore per archiviare questi dati? Ho alcune ipotesi però:

  1. colonne separate nella tabella per ogni lingua (come title_en, title_fr)
  2. tavoli separati per ogni lingua (come pages_en, pages_fr)
  3. tavola a croce per le traduzioni (avendo un id nella tabella delle pagine e con questo id collegato in una tabella di traduzione dove ci sono più colonne come trans_en, trans_fr)
  4. con dati non multilingue in una tabella per pagine di esempio e traduzioni in una tabella per lingua (pagine_it, pagine_fr)
  5. altro?
+0

Ok, vedo un problema con la seconda soluzione perché se si aggiunge una nuova lingua e si crea una nuova tabella, tutte le colonne non multilingue devono essere copiate in questa nuova tabella. Ma è probabilmente più veloce della prima soluzione perché la tabella è di dimensioni più ridotte. –

+0

La terza soluzione rende le tabelle primarie molto pulite, ma è difficile fare la manutenzione manuale e la tabella di traduzione sarà killer grande –

+0

La seconda soluzione è facile da espandere in nuove lingue (basta aggiungere colonne) ma può ancora diventare molto grande se le lingue sono drasticamente espandi) ... Un po 'bloccato qui ... –

risposta

1

Se dovessi fare un sito multilingue, quindi vorrei progettare il db come segue:

enter image description here

Ogni pagina dell'applicazione può avere più lingue. Devi solo filtrare l'ID della lingua per ottenere la lingua desiderata per la pagina.

Problemi correlati