Jump to content

Multilanguage DataBase Diagram


groga
 Share

Recommended Posts

Boas pessoal, estou a começar a dar Base de Dados e foi-nos dado um projecto que era avaliar um site e fazer a base de dados de suporte do mesmo...

O site escolhido foi um de vendas online de bilhetes para eventos...

Ora, tenho a base de dados praticamente toda feita, mas o professor quer que façamos suporte para  a base de dados em várias línguas. Avisou-nos que não era relativamente simples e para os nossos conhecimentos até à data que iria ser dificil para nós e recomendou pesquisar-mos na internet.

Fiz a pesquisa e encontrei muitos sites com a mesma solução que era a cada tabela , duplicava-a e escolhia os campos a traduzir. Tipo:

evento:

ev_id PK

Nome

Local

Descrição

...

e a solução para esta tabela era:

eventoLanguage:

NomePT

NomeENG

LocalPT

LocalENG

DescriçãoPT

DescriçãoENG

...

Ora, isto funciona para esta tabela , mas para as restantes teria de andar a fazer igualmente, o que não me parece uma boa solução. Embora talvez o professor aceite esta solução, gostava de saber se existe alguma mais genérica, isto é, não preciso de andar a criar as tabelas de tradução e a cada inserção de uma nova linguagem adicionar mais atributos.

Alguma ideia?

cumps

Link to comment
Share on other sites

Geez, não...

Identificaste correctamente o problema dessa solução: "a cada inserção de uma nova linguagem adicionar mais atributos". Solução: a tabela com as traduções ter como chave estrangeira, ou como dupla chave primária, a linguagem. Além disso, a chave principal não precisa de ter os mesmos campos (há quem use, há quem não use - eu não uso).

[evento]
ev_id*
data
hora
...

[evento_linguagens]
ev_id*
linguagem_id*
nome
local
descricao
...

Quanto a isto: "não preciso de andar a criar as tabelas de tradução", poderia ser feito com recurso a uma só tabela de traduções que tivesse como chave estrangeira o nome (ou um id) da tabela de origem a que se referia, mas isso ia levantar ainda mais problemas; logo a abrir, de que tipo seria o campo com o texto traduzido? Para se jogar pelo seguro teria de ser TEXT, mas isso era um desperdício de espaço na BD (para além de aumentar imenso a complexidade de potenciais pesquisas), já para não falar da eventualidade de teres de usar BLOB...

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

Pois eu andava a tentar de uma forma mais complicada mas mais genérica e era +/- como falou. Tinha uma tabela lingua com um idLingua*, tinha uma tabela campo com o idCampo e tinha uma tabela Linha que recebia o idLingua, idCampo e o campo chegava de cada tabela que iria ser traduzida, mas isto não me parece funcionar

Então recomenda fazer da forma de que cada tabela que deva ser traduzida, deve ter uma tabela duplicada para as línguas certo? +/- tipo este exemplo:

"Evento":

----------------

ID             

...

"EventoTradutor"

---------------------------

EV_ID      foreign key

Lingua     

Descrição

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.