Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Não, me refiro a criação da tabela mesmo. como faço o Foreign key para trazer as informações de endereço.
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
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.
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
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.