Ir para conteúdo

Arquivado

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

Peglow

Foreign key

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.