Ir para conteúdo

POWERED BY:

Arquivado

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

id.cs

Problema com criação de relacionamentos

Recommended Posts

Boa noite pessoal,

Estou com uma extrema dificuldade para criar relacionamentos no MySql, antes usava o famoso Access, mas não supriu as minhas necessidades como esperava, mas enfim isso não é a questão, o problema básico é que não tem jeito de criar relacionamentos.

Assim, em Access eu criava um relacionamento onde uma tabela chamada por exemplo de (departamento) era relacionada a tabela (produto), onde muitos produtos poderiam ter um departameto, o famoso um para muitos, poisé, em Access erá simples apenas arrastava, rsrsrs, em MySql não é mesma coisa mas também não é um bicho, uso como auxilio o front-end MySQL Front, mas não tem jeito, segui o topico que está fixado nessa área do fórum, mas não deu, ele me dá uma mensagem de erro porem exibi os relacionamentos tranquilamente. Só que em Access quando eu excluia um determinado departamento, automaticamente os registros da tabela produto que tinham esse departamento relacionado eram excluídos, só que em MySql não to conseguindo isso, mesmo marcando a opção Delete = Cascate.

Bom pessoal, peço encareçidamente uma ajuda, já to há uns dias pesquisando lendo e nada! Agradeço desde já!

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o tipo da tabela (ou engine) que utilizou? MyIsam ou Innodb, até o momento myisam apesar de conseguir criar o relacionamento, o mesmo não é utilizado pelo mysql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O SQLYog tem um recurso mais interessante na parte de criar relacionamentos (foreign keys).

hum, interessante este front-end, com ele será que consigo criar os relacionamentos da forma que preciso ou terei de fazer via SQL mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um outro teste bemmmmmmmmmmm simples:

CREATE TABLE `departamento` (

`dep_id` int(11) NOT NULL auto_increment,

`dep_nome` varchar(20) NOT NULL,

PRIMARY KEY (`dep_id`)

) ENGINE=InnoDB

CREATE TABLE `produtos` (

`pro_id` int(11) NOT NULL auto_increment,

`dep_id` int(11) default NULL,

`pro_nome` varchar(20) NOT NULL,

PRIMARY KEY (`pro_id`),

KEY `FK_produtos` (`dep_id`),

CONSTRAINT `produto_departamento` FOREIGN KEY (`dep_id`) REFERENCES `departamento` (`dep_id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB

Aí está criando as tabelas departamento e produto, e departamento pode ter vários produtos.

Se deletar um departamento, todos os produtos devem ser exclúidos.

 

 

O SQLYog tem um recurso mais interessante na parte de criar relacionamentos (foreign keys).

hum, interessante este front-end, com ele será que consigo criar os relacionamentos da forma que preciso ou terei de fazer via SQL mesmo?

 

Costumo utilizar esta ferramenta p/ criar os relacionamentos.

Na verdade aí você só faz a ligação dos campos entre as tabelas.

Se será um-para-um ou um-para-muitos, vai depender dos índices únicos (ou a chave primária) que existem na tabela filha (no caso dos campos utilizados na referência).

Tipo este último exemplo, da forma que está é um p/ muitos, mas se adicionar um índice único (ou se for o caso uma chave primária para o campo dep_id na tabela produtos, automaticamente será um p/ um.

alter table `test`.`produtos` drop key `FK_produtos`, add unique `FK_produtos` ( `dep_id` )

E só iria fazer este tipo de alteração caso a mesma não afete a integridade dos registros que já existem na tabela.

Lembrando que os tipos/tamanho dos campos que estão sendo ligados devem ser iguais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

...

Aí está criando as tabelas departamento e produto, e departamento pode ter vários produtos.

Se deletar um departamento, todos os produtos devem ser exclúidos.

Bá amigo, sem comentários, meu erro era absurdo, eu tava fazendo certo os relacionamentos, o problema é que eu apagava um departamento em seguida abria a tabela produtos mas eu não á atualizava, ai via os registros, simplesmente atualizei a tabela e os registros tinha sido apagados.

Valeu cassitos, eu que não me liguei, mas de qualquer forma, valeu pela força!!!

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.