Peglow 0 Denunciar post Postado Junho 21, 2016 Bom dia a todos! Estou com uma duvida sobre foreign key e como usá-la de forma correta exemplo: tenho a tabela de clientes e vou ter uma tabela de pedidos onde irei buscar as informações do cliente para dentro do pedido Cliente id Nome uf cidade Bairro Endereco Na tabela pedido tem inumeros campos, como numero de pedido, nome cliente impostos, valores.... e vai ter o campo de endereço. Como eu faço essa referencia: na hora de gerar o SQL da tabela de clientes refente a foreing key que que deve buscar as informações do cliente como o endreço pedido id cliente valores impostos uf cidade Bairro Endereco Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 Não sei se entendi sua dúvida muito bem... Você se refere a buscar os dados da tabela cliente + o endereço que fica em outra tabela? Se for isso, utilize JOIN para trazer dados de várias tabelas. Compartilhar este post Link para o post Compartilhar em outros sites
Peglow 0 Denunciar post Postado Junho 21, 2016 Não, me refiro a criação da tabela mesmo. como faço o Foreign key para trazer as informações de endereço. Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 As colunas são criadas normalmente, e para criar a ligação entre as tabelas você adiciona a chave estrangeira informando qual tabela/coluna ela está referenciando, exemplo: CREATE TABLE cliente( id int NOT NULL AUTO_INCREMENT, nome character varying NOT NULL, PRIMARY KEY (id) ); CREATE TABLE endereco( id int NOT NULL AUTO_INCREMENT, id_cliente int NOT NULL, cidade character varying, uf character varying, PRIMARY KEY (id) FOREIGN KEY (id_cliente) REFERENCES cliente(id) ); Mais informações: http://www.w3schools.com/sql/sql_foreignkey.asp Compartilhar este post Link para o post Compartilhar em outros sites
Peglow 0 Denunciar post Postado Junho 22, 2016 Valeu AndersonMamede, mas uma das minhas duvidas é o seguinte.. seria em relação ao pedido, onde ei teria que buscar varias informações da tabela cliente CREATE TABLE cliente( id int AUTO_INCREMENT, nome character varying NOT NULL, cidade character varying, uf character varying, PRIMARY KEY (id) ); essa seria minha tabela cliente, agora a minha duvida, quando eu colocar a tabela de pedidos e quiser buscar as informações do cliente, tenho que fazer uma FOREIGN KEY para cada atributo, (Id, cidade, uf, etc) ou fazendo um FOREIGN KEY somente do id do cliente terei acesso a todas as informações da tabla cliente. Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 22, 2016 Então... você só cria FK (FOREIGN KEY) para fazer a ligação entre as tabelas. A FK por si só não busca informação nenhuma, ela apenas indica que aquela coluna está relacionada à outra tabela, desta forma a coluna ID da tabela cliente fica "ligada" à coluna ID_CLIENTE da pedidos (exemplo), como se fosse uma dependência. Para fazer a ligação, geralmente usa-se a chave primária da tabela que se quer referenciar (ex: ID da tabela cliente) na tabela onde você quer adicionar a FK (ex: ID_CLIENTE na tabela pedidos). Isto é a FK (Foreign Key / chave estrangeira). Já a etapa de buscar os dados relacionados entre várias tabelas (cliente e pedido, por ex.), é feito no SELECT. Você pode utilizar a "cláusula" JOIN para juntar dados de várias tabelas. Então no exemplo das tabelas pedido e cliente, um SELECT para trazer dados de ambas tabelas ficaria assim: SELECT p.data, p.valor, c.nome, c.cidade, c.uf FROM pedido as p INNER JOIN cliente as c ON c.id = p.id_cliente Compartilhar este post Link para o post Compartilhar em outros sites