Bom design da tabela de banco de dados para armazenar as versões localizadas de dados [fechado]
-
02-07-2019 - |
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
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.