baladaclick Postado Novembro 18, 2008 Denunciar Share Postado Novembro 18, 2008 Galera como resolvo esse problema q ta dando no mysql. quero fazer relacionamento das minhas tabelas e não consigo por conta disso. eu sei que as tabelas tem q estar no engine innodb, todas estão, mas não consigo mesmo assim.aqui está a estrutura do meu bancotb_clientes 0 InnoDB latin1_bin 16.0 KB - tb_consultores 0 InnoDB latin1_bin 16.0 KB - tb_forma_pagamento 0 InnoDB latin1_bin 16.0 KB - tb_indices 0 InnoDB latin1_bin 16.0 KB - tb_modalidades 0 InnoDB latin1_bin 16.0 KB - tb_plataformas 0 InnoDB latin1_bin 16.0 KB - tb_produto 0 InnoDB latin1_bin 16.0 KB - tb_situacao 0 InnoDB latin1_bin 16.0 KB - tb_usuarios 0 InnoDB latin1_bin 16.0 KB - tb_vendas 0 InnoDB latin1_bin 16.0 KB - 10 tabela(s) Soma 0 MyISAM latin1_bin 160.0 KB 0 Bytes alguém pode me ajudar?abraço! Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Novembro 18, 2008 Denunciar Share Postado Novembro 18, 2008 Você que fazer relacionamentos ou aplicar constraints que assegurem a interdependencia entre as tabelas.Se for o primeiro caso, então qualquer engine é possível pois é um assunto de SELECTs e JOINsSe for o segundo assunto, você deve assegurar que as tabelas estejam íntegras, ou seja sem lixo nos atributos que estarão no lado muitos do relacionamento. Deve, também assegurar que todas tem chaves primárias e que os atributos que serão as chaves candidatas (foreign keys) tenham o mesmo tipo e tamanho das que serão as chaves primarias.ExemploSe sei que há um relacionamento um para muitos entre tb_produto e tb_vendas (usando seu exemplo), ou seja um produto pode estar em muitas vendas. Então, na tabela tb_vendas o atributo que fará a ligação com a tabela tb_produto deve ter o mesmo tipo e tamanho do atributo que representa a chave promária da tabela tb_produto.Devo me certificar, também que todos os valores deste atributo na tabela tb_vendas estejam no atributo correspondente da tabela tb_produto.O próximo passo é estabelecer a ligação. para isto use (supondo que o atributo comum entre estas tabelas tenha o nome id_produto):ALTER TABLE tb_vendas ADD CONSTRAINT FK_tb_vendas_001 FOREIGN KEY (id_produto) REFERENCES tb_produto(id_produto);Onde:FK_tb_vendas_001 = é o nome do indice que será a chave estrangeira e que estabelece o relacionamento com a tabela produtoFOREIGN KEY (id_produto) = é o atributo da tabela tb_vendas que estabelece o relacionamento com a tabela produtotb_produto(id_produto) = é a chave primária na tabela de produto Link para o comentário Compartilhar em outros sites More sharing options...
0 baladaclick Postado Novembro 18, 2008 Autor Denunciar Share Postado Novembro 18, 2008 certo denis, excelente explicação. vou tentar aqui e já volto p dizer se deu certo. outra coisa. poderia me apresentar algum link ou material sobre esses comando q você postou ai? FK / Foreign Key. tal. estou começando agora mexer com mysql.Obrigado denis Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Novembro 18, 2008 Denunciar Share Postado Novembro 18, 2008 certo denis, excelente explicação. vou tentar aqui e já volto p dizer se deu certo. outra coisa. poderia me apresentar algum link ou material sobre esses comando q você postou ai? FK / Foreign Key. tal. estou começando agora mexer com mysql.Obrigado denisManual do MySQL de sua versão, ou, se você não souber inglês, manual do mysql versão 4.1 traduzido para o português. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
baladaclick
Galera como resolvo esse problema q ta dando no mysql. quero fazer relacionamento das minhas tabelas e não consigo por conta disso. eu sei que as tabelas tem q estar no engine innodb, todas estão, mas não consigo mesmo assim.
aqui está a estrutura do meu banco
tb_clientes 0 InnoDB latin1_bin 16.0 KB -
tb_consultores 0 InnoDB latin1_bin 16.0 KB -
tb_forma_pagamento 0 InnoDB latin1_bin 16.0 KB -
tb_indices 0 InnoDB latin1_bin 16.0 KB -
tb_modalidades 0 InnoDB latin1_bin 16.0 KB -
tb_plataformas 0 InnoDB latin1_bin 16.0 KB -
tb_produto 0 InnoDB latin1_bin 16.0 KB -
tb_situacao 0 InnoDB latin1_bin 16.0 KB -
tb_usuarios 0 InnoDB latin1_bin 16.0 KB -
tb_vendas 0 InnoDB latin1_bin 16.0 KB -
10 tabela(s) Soma 0 MyISAM latin1_bin 160.0 KB 0 Bytes
alguém pode me ajudar?
abraço!
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados