Bom design da tabela de banco de dados para armazenar as versões localizadas de dados [fechado]

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

Pergunta

Eu estou tentando criar algumas tabelas para armazenar alguns dados, que tem de ser convertido para diferentes idiomas mais tarde. Alguém pode fornecer alguns "melhores práticas" ou diretrizes para isso?

Graças

Foi útil?

Solução

Vamos dizer que você tem uma tabela de produtos que se parece com isso:

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

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

Então você acabou de se juntar em product_id = product.id e onde locale = 'pt-BR'

é claro que isso tem um impacto sobre o desempenho, já que agora você precisa de uma juntar-se para obter o nome e descrição, mas permite que qualquer número de localidades mais tarde.

Outras dicas

Eu beleve que mais informações sobre o que está fazendo seria útil. Pode você dar algumas amostras de dados? E o que você quer dizer com dinâmica? Que haverá muitos dados inseridos ao longo do tempo e um monte de alterações nos dados ou que os dados só precisa estar disponível para um pequeno período de tempo.

Em geral, você provavelmente deve estar a olhar para um pai com dados comuns não localizada, e uma mesa de criança com os dados localizadas e a chave da linguagem. Se por dinâmica, você quer dizer que ela muda com freqüência, você pode querer ter um olhar para usando gatilhos e algo como uma bandeira 'translationRequired' para marcar as coisas que estão em necessidade de tradução após a alteração é feita.

Você pode descrever a natureza da 'dados dinâmicos'?

Uma maneira de implementar isso seria ter 3 tabelas diferentes:

  • Tabela Idioma
    • Esta tabela seria armazenar o idioma e uma chave:
    [1, English], 
    [2, Spanish]
  • Definição da Tabela de Dados
    • Quando os dados dinâmico é entrou pela primeira vez fazer um registro nesta tabela com e identificador para os dados:
      [1, 'Data1'], 
      [2, 'Data2']
  • Tabela Data_Language
    • Esta tabela vai ligar a linguagem, definição de dados e tradução
      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 os dados dinâmicos é introduzido criar o registro do padrão 'Inglês' e então traduzir em seu lazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top