Estou com uma duvida na relação de três tabelas.
Tenho as tabelas usuario, cliente e funcionario.
O usuario pode ser um cliente ou um funcionario
Gostaria de saber como ficara essa relação.
Att,
Wanderson Carvalho.
Estou com uma duvida na relação de três tabelas.
Tenho as tabelas usuario, cliente e funcionario.
O usuario pode ser um cliente ou um funcionario
Gostaria de saber como ficara essa relação.
Att,
Wanderson Carvalho.
Wanderson, depende da situação. Se cliente e funcionário tiverem praticamente os mesmos campos, o mais simple é você colocar tudo em uma tabela só, com uma flag indicando se é cliente ou funcionário.
Se os campos forem totalmente diferentes, separe os campos comuns em uma outra tabela (usuário) e coloque nela uma flag indicando se é usuário ou funcionário.
Espero ter ajudado
bom dia, wanderson
bom, vc pode fazer um especializar tua classe ou tabela, nas classe cria uma classe Pessoa e dai cria duas filhas herdando de Pessoa e apenas os atributos que nao sao comuns ira para as filhas, no caso das tabelas vc poder fazer dessa forma tbem, so q a sua foreign key tbem vai ser primary key, mas se nao queres dessa forma faz em uma unica tabela, tabelao :).
concordo com o Cícero
Fiz da seguinte forma,
Na minha tabela usuario coloquei os campos:
id_usuario
login;
senha;
tipo_usuario; // flag(cliente ou funcionario)
id_cliente
id_funcionario
Só na minha aplicação vou ter uma sessão onde vou armazenar alguns dados do usuario logado.
dai acrescentei na minha tabela usuarios id_cliente e id_funcionario, se o usuario ser um funcionario
armazena o id do funcionario cadastrado e deixa o id_cliente nulo.
Pensei de outra forma também, retirar os campos id_cliente e id_funcionario e no campo id_usuario
armazena o id_cliente ou funcionário dependendo do tipo de usuario que ele ser.
Qual opção vocês acha ?
Obrigado!
Att,
Wanderson Carvalho.
a solução do cícero era a mais correta.
Não faz sentido você criar essa flag e ter 3 ids.
Isso gambiarra meu amigo.
ou controla pela flag e mantem um único id. Ou deixa esses esquema aí… com 3 ids e elimina a flag… o que acho errado
Eu faria, da seguinte forma, nao sei se concordas comigo, na minha tabela filha Usuario teria o atributo status ou algo que identificasse esse status na sessao, dai gardaria esse valor ficaria na minha sessao enquanto estivesse lougado. dai so Usuario teria esse atributo.
Mas olha só, vou armazena o nome do cliente na sessão então na autenticação do usuário eu tenho que
saber o nome dele que está na tabela de clientes ou funcionário.
o melhor, na minha opinião, seria algo como:
id
nome
email
cpf
…
id
pessoaId
login
senha
ativo
…
id
pessoaId
dataCadastro
vip
…