Ir para conteúdo

POWERED BY:

Arquivado

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

S t o n e

Chave Estrangeira[]

Recommended Posts

Olá amigos, sou iniciante em mysql e como todo bom iniciante tenho dúvidas, estou com uma dúvida na chave estrangeira no mysql,

estou fazeno um cadastro de clientes.

 

TABELA CLIENTES

-CLI_CODIGO		  |---END_CODIGO
-CLI_NOME		  |	   END_RUA
-CLI_ENDEREÇO-----|	   END_BAIRO
-CLI_TIPO			   END_NUM
								   END_CEP

preciso que o campo CLI_ENDERECO se ligue com o END_CODIGO para pegar o endereço do cliente.

tem como fazer isso em mysql?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quais são essas duas tabelas que você tem que quer fazer o relacionamento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

na tabela ENDERECO você coloca o campo END_CODIGO como PK

e na tabela CLIENTE você coloca o campo CLI_ENDERECO como FK se referenciando a END_CODIGO da tabela ENDERECO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode abrir a possibilidade de ter mais de um endereço para o cliente, podendo assim tem um campo no cadastro de endereços que diga o tipo de endereço, e ter uma tabela intermediária entre CLIENTE e ENDERECO fazendo a ligacão, exemplo:

 

Tabela CLIENTE:

 

CLI_CODIGO PK

CLI_NOME

CLI_TIPO

 

 

Tabela ENDERECO:

 

END_CODIGO PK

END_TIPOEND

END_RUA

END_NUM

END_COMPL

END_BAIRO

END_CEP

 

 

Tabela CLIENTE_ENDERECO

 

CLI_CODIGO PK

END_CODIGO PK

TIPO_PRINCIPAL

 

Na tabela ENDERECO pode ainda ter um campo COMPLEMENTO para informar o número do apartamento ou o que seja complementar ao endereço, na modelagem que coloquei, você pode ter N endereços para o cliente, e podendo assim definir qual é o endereço principal, na tabela CLIENTE_ENDERECO precisa do campo CLI_CODIGO e END_CODIGO para conseguir assim pegar todos os endereços para o cliente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode abrir a possibilidade de ter mais de um endereço para o cliente, podendo assim tem um campo no cadastro de endereços que diga o tipo de endereço, e ter uma tabela intermediária entre CLIENTE e ENDERECO fazendo a ligacão, exemplo:

 

Tabela CLIENTE:

 

CLI_CODIGO PK

CLI_NOME

CLI_TIPO

 

 

Tabela ENDERECO:

 

END_CODIGO PK

END_TIPOEND

END_RUA

END_NUM

END_COMPL

END_BAIRO

END_CEP

 

 

Tabela CLIENTE_ENDERECO

 

CLI_CODIGO PK

END_CODIGO PK

TIPO_PRINCIPAL

 

Na tabela ENDERECO pode ainda ter um campo COMPLEMENTO para informar o número do apartamento ou o que seja complementar ao endereço, na modelagem que coloquei, você pode ter N endereços para o cliente, e podendo assim definir qual é o endereço principal, na tabela CLIENTE_ENDERECO precisa do campo CLI_CODIGO e END_CODIGO para conseguir assim pegar todos os endereços para o cliente.

Humm.. vou tentar fazer do seu jeito ;D

mas assim quando eu chamar os dados pelo CLI_CODIGO ou END_CODIGO da tabela CLIENTE_ENDERECO ele ja me traz todos os dados automaticamente?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm.. é nisso que estou com dúvida.. como cruzar as duas tabelas.. no firebird é só criar uma chave estrangeira seja qual for o programa, mas no mysql não sei como :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara agora fiz igual o manual do mysql:

 

CREATE TABLE ENDERECO(

END_CODIGO SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,

END_CLIENTE SMALLINT UNSIGNED NOT NULL REFERENCES CLIENTES(CLI_CODIGO),

PRIMARY KEY (END_CODIGO)

)

 

Mas quando faço a consulta ele retora o END_CLIENTE sempre como 0, ele não está pegando o usuário que que cadastro por último :S

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.