groga Posted March 22, 2012 at 06:24 PM Report #445199 Posted March 22, 2012 at 06:24 PM 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
mjamado Posted March 22, 2012 at 06:45 PM Report #445203 Posted March 22, 2012 at 06:45 PM 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.
groga Posted March 22, 2012 at 06:56 PM Author Report #445205 Posted March 22, 2012 at 06:56 PM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now