Ir ao conteúdo
  • Cadastre-se

MySQL Relacionamento entre duas tabelas


Posts recomendados

Olá pessoal!

Então, é seguinte: estou criando um banco bem simples mesmo, como exercício da faculdade, de um supermercado. Nele eu tenho as tabelas clientes e funcionários. Como clientes e funcionários usam vários atributos iguais resolvi criar a tabela pessoas contendo os campos: id, nome, cpf, rg, email, endereco, data_nascimento. A tabela funcionários possui os campos id, id_pessoas, data_contratacao, funcao e salario. Já na tabela clientes, id, id_pessoa, clilente_desde. Essa é uma forma correta ou possui problemas de se fazer isso? Alguma sugestão de como melhorar?

E nesse caso, seria relacionamento 1 para 1 né? 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@William Borges Acredito que seja uma boa forma de resolver a modelagem. Quanto mais separado os dados possam ficar melhor.

Respeitando a 1NF e 2NF

 

Por isso, para ficar melhor, separe o campo função da tabela de funcionários para uma nova tabela. Esta tabela será 1:N pois o supermercado pode ter N funcionários.

Assim como a tabela clientes, pois o supermercado pode ter N clientes.

PS: Nomes de tabelas, use sempre no singular. Pessoa, funcionario, cliente

 

Então basicamente podes fazer assim:

PK = Chave primária  FK = Chave estrangeira

tabela pessoa
ID INT(11) auto increment PK
nome varchar 
cpf varchar
rg varchar
email varchar
endereco varchar
data_Nascimento date


tabela cliente
ID INT(11) auto increment PK
ID_pessoa INT FK
cliente_Desde date


tabela funcionario
ID INT(11) auto increment PK
ID_pessoa INT(11) FK
ID_funcao INT(11) FK
salario Double(9,2)


tabela funcao
ID INT(11) auto increment PK
tipo_Funcao varchar

 

Se o funcionário e cliente tiver mais de um telefone, como celular e residencial, melhor criar uma nova tabela chamada contato, onde terá ID PK , ID_pessoa FK, numero.

 

 

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

@DiF  

Em 17/05/2020 às 02:06, DiF disse:

@William Borges Acredito que seja uma boa forma de resolver a modelagem. Quanto mais separado os dados possam ficar melhor.

Respeitando a 1NF e 2NF

 

Por isso, para ficar melhor, separe o campo função da tabela de funcionários para uma nova tabela. Esta tabela será 1:N pois o supermercado pode ter N funcionários.

Assim como a tabela clientes, pois o supermercado pode ter N clientes.

PS: Nomes de tabelas, use sempre no singular. Pessoa, funcionario, cliente

 

Então basicamente podes fazer assim:

PK = Chave primária  FK = Chave estrangeira


tabela pessoa
ID INT(11) auto increment PK
nome varchar 
cpf varchar
rg varchar
email varchar
endereco varchar
data_Nascimento date


tabela cliente
ID INT(11) auto increment PK
ID_pessoa INT FK
cliente_Desde date


tabela funcionario
ID INT(11) auto increment PK
ID_pessoa INT(11) FK
ID_funcao INT(11) FK
salario Double(9,2)


tabela funcao
ID INT(11) auto increment PK
tipo_Funcao varchar

 

Se o funcionário e cliente tiver mais de um telefone, como celular e residencial, melhor criar uma nova tabela chamada contato, onde terá ID PK , ID_pessoa FK, numero.

 

 

@DiF Muito obrigado! Sua informação foi muito útil!

  • Curtir 1
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...