Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Aladir Jr.

Tabelas vinculadas (anexadas) em MySQL

Recommended Posts

Prezados,

 

Gostaria de receber ajuda para vincular (anexar) uma tabela de um banco MySQL em outro banco MySQL. O objetivo é não repetir uma mesma tabela em vários bancos e ter que atualizá-la em todos!!!

 

Esse recurso já existe em Access há muito tempo, não acredito que o MySQL não o possua!!!

 

Li e reli a documentação oficial (www.mysql.com), e também pesquisei no Google, e nada!!!

 

Encontrei algo a respeito de "links simbólicos" para tabelas, contudo não consegui fazer funcionar!!!

 

Estou usando MySQL 5 com tabelas do tipo MyISAM em Linux Fedora 6.

 

Agradeço qualquer ajuda!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

De um banco você pode acessar as tabelas de outro banco usando a sintaxe banco.tabela

Essa é uma dica bem útil!!! Como sou iniciante em MySQL não sabia que era possível esse tipo de consulta SQL. Acredito que isso seja compatível com a maioria das linguagens. Obrigado pela resposta!Contudo, tenho uma situação particular: estou usando Blue Dragon (equivalente ao Cold Fusion) em Linux. Nesse caso, antes de rodar as páginas ".cfm", devo cadastrar um "Data Source" que necessariamente refere-se a um banco MySQL específico. Assim, acredito que não seja possível citar dois bancos em uma mesma consulta.Encontrei uma forma de vincular (anexar) tabelas de um banco MySQL em outro banco MySQL. Como sou iniciante, isso me parece bem estranho, mas funcionou!!!Compartilho, então, com os colegas esse procedimento...Prezados,Visto que consegui resolver meu problema, coloco aqui a solução para ajudar aqueles que porventura tenham a mesma dúvida. Esse procedimento aplica-se somente para o MySQL rodando em Linux. Para Windows, consulte a documentação oficial (www.mysql.com). Segundo a documentação oficial, a tabela a ser vinculada (anexada) deve ser do tipo “MyISAM”. Neste caso, a tabela é representada por três arquivos:nome_tabela.frm >> Arquivo de formato (definição) da tabela.nome_tabela.MYD >> Arquivo de dadosnome_tabela.MYI >> Arquivo Índice Consideremos um exemplo hipotético:1) Temos dois bancos de dados: bd1 e bd22) Os arquivos de cada banco estão nas pastas /var/lib/mysql/bd1 e/var/lib/mysql/bd2 (esse é o caminho na instalação padrão do MySQL em Linux Fedora 6 – verifique se é o mesmo caminho em sua instalação/distribuição).3) O banco bd1 contém várias tabelas (não necessariamente são todas do mesmo tipo), entre elas a tabela “usuarios” (do tipo “MyISAM”).4) O banco bd2 também contém várias tabelas, entre elas a tabela “pedidos”.5) Necessitamos fazer uma consulta que reúna informações da tabela “pedidos” (banco bd2) e da tabela “usuários” (banco bd1). Como proceder?Realmente é bem simples! Basta vincularmos (anexarmos) a tabela “usuarios” (do banco bd1) no banco bd2. Assim, nossa consulta poderá incluir as duas tabelas, como se a tabela “usuarios” pertencesse ao banco bd2.Como fazer a vinculação da tabela “usuarios”?Faremos isso usando “links simbólicos” (recurso não disponível em Windows). Esse é um recurso do sistema operacional e não do MySQL.Criaremos dois links simbólicos na pasta bd2 que apontarão para os arquivos usuarios.MYD e usuarios.MYI (arquivo de dados e índice da tabela) que estão na pasta bd1. Esses links funcionam como uma espécie de atalho que torna esses dois arquivos disponíveis na pasta db2, apesar de estarem na pasta db1. A criação desses links é feita pelos seguintes comandos no terminal:$ cd /var/lib/mysql/bd2 (vai para a pasta bd2 onde serão criados os links)$ ln -s /var/lib/mysql/bd1/users.MYD users.MYD (cria o link chamado “users.MYD” na pasta atual (bd2), que apontará para o arquivo “users.MYD” dentro da pasta /var/lib/mysql/bd1$ ln -s /var/lib/mysql/bd1/users.MYI users.MYI (cria o link chamado “users.MYI”)Após criarmos os links, copiamos o arquivo “usuarios.frm” da pasta bd1 para a pasta bd2. Esse é o arquivo de definição da tabela, que segundo a documentação, não deve ser um link simbólico.Está pronto! Agora temos a tabela “usuarios” (representada por seus três arquivos) nas pastas bd1 e bd2, ou seja nos dois bancos! Podemos, então, fazer uma consulta que reúna dados das tabelas “pedidos” e “usuarios”.Obs: 1) Tabelas do tipo MyISAM não suportam relacionamentos. Consulte a documentação oficial a respeito das características de cada tipo de tabela.2) Existem operações feitas com tabelas que não suportam links simbólicos. Consulte a documentação para mais detalhes.Aladir Jr.webmaster@mormons.eng.brwww.mormons.eng.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.