Il mio capo sta pianificando un nuovo db e desidera supportare i dati multilingue in questo modo:
LocalizedDescs (Guid / LanguageGuid è la chiave primaria)
- Cluster
- Guid
- LanguageGuid
- Desc
categorie merceologiche
- Cluster
- Guid
- (...)
Prodotti
- Cluster
- Guid
- CategoryGuid
- DetailedDescGuid
- (...)
Il modo in cui funziona è che ogni tabella ha un campo Guid
, usato come chiave primaria. Il campo LocalizedDesc
della tabella Guid
, a sua volta, corrisponde a qualsiasi guida utilizzata nelle tabelle in tutto il db, rendendolo una tabella genitore per ogni tabella nel sistema.
In rari casi in cui un record di tabella ha bisogno di un'altra risorsa localizzata, nella tabella viene utilizzato un campo aggiuntivo che punta anche a un record LocalizedDesc
. Ad esempio, la tabella Products
ha una DetailedDescGuid
che intende contenere una descrizione estesa e più lunga di un prodotto. In questo modo abbiamo sia una descrizione riassuntiva che una descrizione dettagliata, entrambe le quali possono essere localizzate in diverse lingue.
Originariamente, dovevamo avere un campo LocalizedDescGuid
in ogni tabella che necessitava di una descrizione. Ma il mio capo afferma che gli indici db saranno più piccoli se lo facciamo nell'altro modo.
Dal punto di vista del design, qual è la soluzione di questa soluzione? Era meglio quando usava un campo aggiuntivo in ogni tavolo? O stiamo sbagliando tutto questo?