Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Caros colegas, é mais uma dúvida de modelagem em sim do que script. A solução pode ser subjetiva. Acredito que alguém já tenha passado por essa experiência. Só tem fera nesse fórum.
CENÁRIO:
Tenho três tipos de usuários distintos: funcionario / cliente / grupo - são três tabelas que possuem apenas algumas informações diferentes, como (cpf, matrícula), (cnpj) e (cnh), respectivamente. Esta é a diferença básica. Essas três entidades são também usuários do sistema. Portanto, eles farão login no sistema. Ciei uma outra tabela e coloquei "tipo de acesso".
Exemplo:
- usuário: nivel 1, nivel 2, funcionario e gerente;
- cliente: cliente;
- grupo: motoristas;
.... e qual é a minha duvida? É se coloco tudo numa tabela só ou separo, como estou fazendo? Estou colocando as tabelas funcionario, cliente e grupo se relacionando com a tabela usuário. Assim, na tela de cadastro, por exemplo, "cliente", a estrutura da modelagem fica mais ou menos assim:
TB_FUNCIONÁRIO
- nome - tb_funcionario
- cpf - tb_funcionario
- matricula - tb_funcionario
- nome_usuario - tb usuario
- senha_usuario - tb_usuario
- email_usuario - tb_usuario
- contato_usuário - tb_usuario
TB_CLIENTE
- nome - tb_cliente
- cnpj - tb_cliente
- nome_usuario - tb usuario
- senha_usuario - tb_usuario
- email_usuario - tb_usuario
- contato_usuário - tb_usuario
TB_GRUPOS
- nome - tb_grupo
- cnh - tb_grupo
- nome_usuario - tb usuario
- senha_usuario - tb_usuario
- email_usuario - tb_usuario
- contato_usuário - tb_usuario
Na hora de cadastrar um dos três, salvo o "id_usuario" na tabela do funcionario, cliente ou grupo.
O que vocês acham? Fariam assim também ou teria alguma outra ideia que possa não prejudicar o banco? Porque meu receito é a gama de informações que vai para o banco. Se eu colocar tudo numa tabela só, alguns campos serão inseridos vazios, ocupando um certo espaço. Entendem? Por isto fiz essa separação.
Ideia são sempre bem vidas :D
abçoOmar, vlw pela resposta. Vamos ver se eu entendi...
documento_id seria o campo que poderia armazenar um dos três valores: CPF, CNPJ E CNH. No caso, para armazenar esse valor a pessoa poderia escolhê-lo a partir de um listbox? É isto? Não sei se essa é extamente o que você quis dizer... fui apenas suponto... mas, talvez, seria uma boa saída....rs
....mas veja bem, matrícula ficaria sobrando, portanto um campo vazio na tabela prq somente funcionário possuiria esste campo. Estava pensando em naõ deixar nenhum campo vazio. O que acha?
Entendi tua ideia... no começo cheguei até pensar, mas acabei me esquecendo...rs ..
Já obteve uma solução Carlos?
>
Em 18/12/2018 at 11:37, fagando disse:
Já obteve uma solução Carlos?
...nesse meio tempo sim...
mas...
...é sempre bom ouvir uma opinião de um colega..rs
...
Eu faria em uma tabela só. Visando que todas três tabelas são praticamente idênticas
No caso das colunas cpf/cnpj/cnh poderia criar uma documento_id e salvar os valores, tambem criaria uma coluna só para o tipo se é funcionário, cliente ou grupo.
nome
tipo - Salvaria se é Funcionário, Cliente e Grupo
documento_id - Salvaria CPF CNPJ e CNH
matricula
nome_usuario
senha_usuario
email_usuario
contato_usuário