Ir para conteúdo

POWERED BY:

Arquivado

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

felini

Relacionamento de Tabelas

Recommended Posts

Fala galera, boa noite!

 

Estou com um problema, comprei um livro pra ver se me ajudava, mas não teve jeito.

 

Quero relacionar 3 tabelas, mas não sei como fazer isso! Oo

 

Tenho a tabela cliente com os dados dos clientes. A tabela produto com os produtos que ofereço. A tabela rel_produto que é pra relacionar a cliente e produto.

 

Resumindo, os clientes podem ter muitos produtos e os produtos podem ter muitos clientes. (Revenda de Hospedagem)

 

Contece que eu não sei como acontece o relacionamento vou colar abaixo o meu SQL, se puderem me ajudar, eu agradeço.

 

 

CREATE TABLE IF NOT EXISTS `cliente` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) NOT NULL,
  `sobrenome` varchar(100) NOT NULL,
  `tipo_documento` set('CPF','CNPJ') NOT NULL,
  `num_documento` varchar(20) NOT NULL,
  `email` varchar(200) NOT NULL,
  `fone_fixo` varchar(13) NOT NULL,
  `fone_celular` varchar(13) NOT NULL,
  `endereco` varchar(100) NOT NULL,
  `bairro` varchar(100) NOT NULL,
  `cidade` varchar(50) NOT NULL,
  `estado` varchar(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE IF NOT EXISTS `produtos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(200) NOT NULL,
  `valor` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `rel_produto` (
  `rel_id` int(11) NOT NULL AUTO_INCREMENT,
  `id_cliente` int(11) NOT NULL,
  `id_produto` int(11) NOT NULL,
  `dominio` varchar(200) NOT NULL,
  `login` varchar(100) NOT NULL,
  `senha` varchar(100) NOT NULL,
  `contrato` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_cliente`,`id_produto`,`rel_id`),
  KEY `rel_id` (`rel_id`),
  KEY `id_produto` (`id_produto`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ALTER TABLE `rel_produto`
  ADD CONSTRAINT `rel_produto_ibfk_2` FOREIGN KEY (`id_produto`) REFERENCES `produtos` (`id`),
  ADD CONSTRAINT `rel_produto_ibfk_1` FOREIGN KEY (`id_cliente`) REFERENCES `cliente` (`id`);

 

Eu tentei fazer um relacionamento, mas não sei se ta certo, se alguém puder me explicar como faço, eu agradeço.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo que recomendo para todas pessoas que desejam fazer queries: baixe um software específico para testá-las. O melhor que conheço é o AquaFold DataStudio.

 

 

Já aviso que pode dar bastante trabalho, por isso a recomendação do software. Pois bem, o conceito é simples:

 

 

SELECT * FROM table1, table2 WHERE table1.id=table2.id
Sacou o esquema do ponto? Primeiro vem o nome da tabela e depois o campo, mesma coisa para impressão dos dados.

 

 

Daí em diante, você poderá usar AS, LEFT, JOIN, etc. O AS é muito importante para você não se perder, por exemplo: você tem duas tabelas com nomes de campos iguais, mas para imprimir (echo $row['campo'];) um campo ou outro, eles precisam ter nomes diferentes, daí entra o AS :}

 

Falou e boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala ae Eliseu tranquilo?!

 

Em relação as querys, eu manjo, de como fazer o select e tal! Isso não tem galho!

 

O problema é montar o banco, ele ta estruturado já! Agora não sei como dizer o "o que é o que" dentro dele.

 

Não sei como fazer o relacionamento entre as tabelas, não sei quem é Primary Key quem é Index, constraints, essas coisas! =/

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.