rogerss_7 0 Denunciar post Postado Março 13, 2008 Gente preciso de alguns conselhos sobre esta modelagem: Tenho três tabelas: tb_grupo: id | nome | 1 | Administradores | 2 | Parceiros | tb_regiao: id | nome | 1 | Porto Alegre | 2 | São Paulo | 3 | Belo Horizonte | 4 | etc..... | 5 | etc..... | 6 | etc..... | tb_usuarios: id | nome | login | senha | grupo_id | regiao_id | 1 | Roger | roger | 123 | 1 | 1 | 2 | Pedro | pedro | 123 | 2 | 2 | 3 | Johnn | john | 123 | 2 | 3 | 4 | Maria | mary | 123 | 2 | 2 | De que maneira modelar estas de forma que: QUESTÃO: tb_usuarios: receberá as id's vindas de tb_grupo e tb_regiao, sendo que quando alterar tb_grupo e tb_regiao, será, automaticamente, alterada tb_usuarios. OBS.: Já tenho as tabelas montadas em MyISAM, só devo transformar em InnoDB, mas não sei quais. Acho que faço isso com Chave estrangeira, correto? Não sei NADA de fusão entre tabelas, gostaria, humildemente, que me explicassem como fazê-lo e se possível dar detalhes. Agradeço mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Março 14, 2008 É isso aí, todas as tabelas terão que ser InnoDB. E sim, você irá usar chaves estrangeiras com as devidas constraints. FOREIGN KEY grupo_id REFERENCES id(tb_grupo) ON UPDATE CASCADE ON DELETE RESTRICT Compartilhar este post Link para o post Compartilhar em outros sites
rogerss_7 0 Denunciar post Postado Março 14, 2008 Olá marcio.sfs, obrigado por atender meu pedido, como disse, não sei nada de chave estrangeira, não sei como alterar/incrementar isso que tu falou na minha tb_grupo via phpmyadmin. Obs.: A tb_regiao está sendo ligada também? Perdoe eu não conhecer isso. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Março 14, 2008 Você adiciona os constraints no comando que cria a tabela, ou no alter table (nunca utilizei neste caso). E, sim, região deve ser ligado desta forma também, um constraint para cada chave estrangeira. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
rogerss_7 0 Denunciar post Postado Março 14, 2008 Cara fiz o seguinte, de acordo com o que tu me explicou, veja se está correto: ALTER TABLE `tb_usuarios` ADD CONSTRAINT `fk_grupo` FOREIGN KEY (`grupo_id`) REFERENCES `tb_grupo` (`id`) ON UPDATE CASCADE ON DELETE RESTRICT Uma pergunta, aí acima faço a alteração da tabela tb_usuarios e digo que ela herdará a chave estrangeira do tb_grupo, correto? Como eu faço pra mesma (tb_usuarios) herdar também a da tabela tb_regiao? O comando deveria ser dado junto? A de cima aí já está funcionando, já uns testes e tudo ok. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Março 14, 2008 É só repetir o alter ai, adicionando a constraint agora para a chave que você quer. Compartilhar este post Link para o post Compartilhar em outros sites
rogerss_7 0 Denunciar post Postado Março 14, 2008 Vlw marcio, vou te dizer heim, se não é cara pedir ajuda pra pessoas de outros foruns, subforuns, os carinhas daqui são paradão heim. Vlw Marcio, tu não sabe como me ajudou, abração cara. Compartilhar este post Link para o post Compartilhar em outros sites
rogerss_7 0 Denunciar post Postado Março 14, 2008 Cara não tô conseguindo alterar novamente, o que pode estar acontecendo? Tenho que truncar a tabela e fazer tudo novamente? Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Março 14, 2008 É, como as chaves agora tem controle de referência, vai dar erro por causa das falhas de referencia. Aconselho apagar e recriar as tabelas. Compartilhar este post Link para o post Compartilhar em outros sites
rogerss_7 0 Denunciar post Postado Março 14, 2008 Cara a moral é o seguinte, por linha de comando não consegui, no phpMyAdmin tem uma parte que se chama Índices, fui ali e consegui criar mais um, no caso pra tabela tb_regiao. Qualquer coisa te prendo o grito, ao menos, é claro, que tu se importe? Abraços novamente. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Março 14, 2008 Precisando é só gritar. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites