Ir ao conteúdo
  • Cadastre-se

MySQL como posso fazer com que uma tabela tenha dois dados de uma


Posts recomendados

  • Moderador

@João Vitor Sacramento Rocha Não sei se entendi... mas nesses IDs que você se refere, são chaves estrangeiras.

Ou seja, você faz um relacionamento de 1:N entre duas  ou mais tabelas. Isso faz parte das Normas formais de banco de dados.

 

Exemplo:

Tabela pessoa:

ID(auto increment INT PK)

nome (varchar)

ID_endereco(INT FK)

ID_contato(INT FK)

 

Tabela endereco

ID (auto increment INT PK)

residencia (varchar)

trabalho (varchar)

 

Tabela contato

ID( auto increment INT PK)

residencial(varchar)

celular(varchar)

 

Repare que a tabela "pessoa" contém dois "IDs" em chave estrangeira que refere-se ao campo ID da chave primária das outras duas tabelas.

 

Ou seja, com isso, você implementou a 2NF das nomas formais.

 

Para fazer uma consulta desta forma a sintaxe será:

SELECT pessoa.nome, 
       endereco.residencia, 
       endereco.trabalho, 
       contato.residencial, 
       contato.celular
FROM pessoa
INNER JOIN endereco ON endereco.ID = pessoa.ID_endereco
INNER JOIN contato ON contato.ID = pessoa.ID_contato

 

Por que "FROM pessoa" ? porque os campos de chave estrangeira estão nesta tabela. 

se você modelar o banco pelo mysql workbench, ele vará automático os índices da tabela pessoa e criará os campos de chave estrangeira automático... eu não gosto disso... por isso eu faço direto no phpmyadmin na aba designer... lá eu monto os relacionamentos das tabelas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

14 horas atrás, DiF disse:

@João Vitor Sacramento Rocha Não sei se entendi... mas nesses IDs que você se refere, são chaves estrangeiras.

Ou seja, você faz um relacionamento de 1:N entre duas  ou mais tabelas. Isso faz parte das Normas formais de banco de dados.

 

Exemplo:

Tabela pessoa:

ID(auto increment INT PK)

nome (varchar)

ID_endereco(INT FK)

ID_contato(INT FK)

 

Tabela endereco

ID (auto increment INT PK)

residencia (varchar)

trabalho (varchar)

 

Tabela contato

ID( auto increment INT PK)

residencial(varchar)

celular(varchar)

 

Repare que a tabela "pessoa" contém dois "IDs" em chave estrangeira que refere-se ao campo ID da chave primária das outras duas tabelas.

 

Ou seja, com isso, você implementou a 2NF das nomas formais.

 

Para fazer uma consulta desta forma a sintaxe será:


SELECT pessoa.nome, 
       endereco.residencia, 
       endereco.trabalho, 
       contato.residencial, 
       contato.celular
FROM pessoa
INNER JOIN endereco ON endereco.ID = pessoa.ID_endereco
INNER JOIN contato ON contato.ID = pessoa.ID_contato

 

Por que "FROM pessoa" ? porque os campos de chave estrangeira estão nesta tabela. 

se você modelar o banco pelo mysql workbench, ele vará automático os índices da tabela pessoa e criará os campos de chave estrangeira automático... eu não gosto disso... por isso eu faço direto no phpmyadmin na aba designer... lá eu monto os relacionamentos das tabelas

digamos que ele tenha dois endereço residencia. como faço ? ou tres ou quatro

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...