Ir ao conteúdo

Posts recomendados

Postado

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é? 

  • Moderador
Postado

@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
Postado

@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

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!