ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

cadastro de pessoas
Ir à página 1, 2, 3  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Sex Abr 09, 2010 11:04 am    Assunto: cadastro de pessoas Responder com Citação

andei dando uma vasculhada aqui no forum a respeito de normalização, generalização, especialização etc...

ai eu criei esta tabela de pessoas, e gostaria da opnião de vcs para ver se esta certo, se precisa ser alterada, etc...



eu criei estes dois campos espécie e tipo

no campo espécie será armazenado se a pessoa é um cliente, um fornecedor, um colaborador da empresa,...etc

no campo tipo, se é uma pessoa juridica ou fisica..

então imaginei a seguinte tela...

quando o usuário for cadastrar uma pessoa, primeiro apareceria uma telinha mais ou menos assim...



dai o usuário iria escolher que tipo de pessoa ele iria cadastrar, suponha que ele escolha cliente

a iria aparecer uma nova telinha



nesta tela o usuário teria que escolher se é um cliente fisico ou juridico

depois de feito estas escolhas ai sim vai aparecer a tela de cadastro contendo os campos de acordo com a especie e tipo escolhido..

por exemplo se for escolhido cliente fisico, na tela de cadastro não irá aparecer os campos cnpj e ie e asssim por diante..

ai gostaria de saber se com esta unica tabela de pessoas, o sistema conseguiria gerenciar a empresa, cadastrando clientes, fornecedores, colaboradore, efetuando vendas, gerando constas a receber...etc e se eu conseguiria cadastrar uma mesma pessoa como colaborador e cliente da empresa, pq suponhamos que em uma loja há um vendedor, e ele esta cadastrado como colaborador, e de repente ele compra alguma coisa na loja, então ele se tornaria um cliente também...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Sex Abr 09, 2010 11:07 am    Assunto: Responder com Citação

acho q vc poderia colocar DbCombobox pro usuario selecionar ao inves de abrir essas telas
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Lehapan
Experiente
Experiente


Registrado: Quarta-Feira, 16 de Junho de 2004
Mensagens: 401
Localização: Caxias do Sul - RS

MensagemEnviada: Sex Abr 09, 2010 11:09 am    Assunto: Responder com Citação

Sugiro que você substitua o campo "Especie" por 3 campos boolean (Cliente, Fornecedor e Colaborador), assim, você poderia dizer que a mesma pessoa é Cliente, Fornecedor e Colaborador, ou qualquer combinação entre os 3 campos. Assim, não seria necessário recadastrar a mesma pessoa 3 vezes, caso ela fosse as 3 espécies.

Espero ter colaborado.
_________________
Wilson Lehapan Junior, vulgo Paulista...!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Sex Abr 09, 2010 11:35 am    Assunto: Responder com Citação

joemil - as telinhas é mais uma questão visual mesmo, ao invés de ter uma combo com 3 itens, teria uma tela com 3 botões, e teria ums icones 'bonitão', ficaria mais atraente...(mais ainda tenho que ver se ficaria mais funcional...)


Lehapan - então seria +- assim se eu crio 3 campos

cliente
fornecedor
colaborador

estes campos receberiam true ou false, na modelagem eu coloco que tipo 'bool' ?

se eu usar desta forma, acho que vai mudar a minha tela de cadastro, ai ainda tenho que ver como vai funcionar isto,

mas tranquilo, não tenho nada feito ainda, estou apenas planejando as coisas....
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Lehapan
Experiente
Experiente


Registrado: Quarta-Feira, 16 de Junho de 2004
Mensagens: 401
Localização: Caxias do Sul - RS

MensagemEnviada: Sex Abr 09, 2010 11:39 am    Assunto: Responder com Citação

Não sei como você trata na modelagem os campos boolean, mas seriam 3 campos boolean, assim como deduzo ser o seu campo "Ativado".
É como se você tivesse 3 CheckBox...acho que conseguiu me entender.

Qualquer coisa post aí que tentaremos lhe ajudar.

Espero ter colaborado.
_________________
Wilson Lehapan Junior, vulgo Paulista...!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Sex Abr 09, 2010 11:47 am    Assunto: Responder com Citação

o campo ativado é do tipo char(1) e receberia S(sim) ou N(não)

será que no firebird tem um campo do tipo boolean pra receber true ou false?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Lehapan
Experiente
Experiente


Registrado: Quarta-Feira, 16 de Junho de 2004
Mensagens: 401
Localização: Caxias do Sul - RS

MensagemEnviada: Sex Abr 09, 2010 11:48 am    Assunto: Responder com Citação

Também trato os campos Boolean desta maneira ('S' e 'N') e como CHAR(1).
_________________
Wilson Lehapan Junior, vulgo Paulista...!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Sex Abr 09, 2010 12:04 pm    Assunto: Responder com Citação

De uma olhada nestes tópicos:

http://www.activedelphi.com.br/forum/viewtopic.php?t=51637&postdays=0&postorder=asc&highlight=pessoa&start=0

http://www.activedelphi.com.br/forum/viewtopic.php?t=51595&highlight=pessoa

http://www.activedelphi.com.br/forum/viewtopic.php?t=48200&highlight=pessoa

Até pode haver mais tópicos perdidos no fórum, mas estou sem tempo e dei uma olhada por cima. Smile


Boa sorte!
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.


Editado pela última vez por pestana em Sex Abr 09, 2010 12:09 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Sex Abr 09, 2010 12:08 pm    Assunto: Responder com Citação

no meu caso, eu tenho os seguintes campos pra indicar o tipo do "cliente", q aqui chamamos de entidades:

entid_cli -> cliente
entid_for -> fornecedor
entid_rep -> representante
entid_func ->funcionario
entid_transp -> transportador

todos os campos sao char(1) e recebem S ou N

dai qdo estou fazendo uma venda, filtro so os q sao clientes, mas eu posso marcar todas as opcoes pra cada entidade, ou apenas uma, ou a combinacao necessaria
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
aeciovc
Colaborador
Colaborador


Registrado: Terça-Feira, 18 de Dezembro de 2007
Mensagens: 1042
Localização: Recife

MensagemEnviada: Sex Abr 09, 2010 8:19 pm    Assunto: Responder com Citação

Citação:
Sugiro que você substitua o campo "Especie" por 3 campos boolean (Cliente, Fornecedor e Colaborador), assim, você poderia dizer que a mesma pessoa é Cliente, Fornecedor e Colaborador, ou qualquer combinação entre os 3 campos. Assim, não seria necessário recadastrar a mesma pessoa 3 vezes, caso ela fosse as 3 espécies.

Espero ter colaborado.


isso não estaria Normatizado!

e caso ela precisasse de uma especie por exemplo como: Engenheiro??

seria outro campo boolean??
_________________
Aécio Costa
http://www.aeciocosta.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário MSN Messenger
aeciovc
Colaborador
Colaborador


Registrado: Terça-Feira, 18 de Dezembro de 2007
Mensagens: 1042
Localização: Recife

MensagemEnviada: Sex Abr 09, 2010 8:21 pm    Assunto: Responder com Citação

acredito que fosse melhor você ter uma tabela do tipo:

EspeciesPessoa

idPessoa
idEspecie

axo que dexa a coisa mais dinâmica!!
_________________
Aécio Costa
http://www.aeciocosta.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário MSN Messenger
Fabianoluizdb
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 17 de Agosto de 2009
Mensagens: 396

MensagemEnviada: Sáb Abr 10, 2010 9:06 am    Assunto: Responder com Citação

Concordo com o Colega acima

na empresa temos uma tabela chamada divisao, Divisao = char(2) e Descricao = Char(30)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Sáb Abr 10, 2010 2:25 pm    Assunto: Responder com Citação

gente na teoria eu sei o que é generalização e especialização, mas na pratica e meio chato aplicar isso

no final das contas qual é a melhor maneira, não a mais fácil e sim a mais profissional, que deixe o sistema mais confiavel..

assim



ou assim



e no caso da segunda opção ainda tem mais umas paradas..

aqui só ta o esquema pra distinguir o que é pessoa juridica e o que e pessoa fisica..

mais ainda falta saber como diferenciar o que sera cliente, fornecedor, funcionario..etc..

sem contar que pode ter um fornecedor fisico e um forncedor juridico...e o mesmo caso paro os clientes...

e tbm tem o funcionario que tem alguns dados a mais , como numero carteira de trabalho, pis...etc...

alguém de uma luz ai....se possivel de maneira visual, como eu estou postando, pois fica mais facil o entendimento..
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Sáb Abr 10, 2010 3:09 pm    Assunto: Responder com Citação

Neste caso, eu prefiro utilizar o conceito de Generalização/Especialização do DER.

Cliente, Funcionario e Fornecedor são todos pessoas, então, generaliza os dados que são comuns para todos e os dados que são especificos de cada um você especializa.

As tabelas ficariam assim:

Pessoa {id_pessoa, nome, data_nascimentoInauguração, nome_fantasia, razao_apelido, ativado...} // Generalização

Fisica {id_pessoa, cpf, rg, sexo} // Especialização
id_pessoa chave primaria,
id_pessoa referência a tabela Pessoa

Juridica {id_pessoa, cnpj, IE} // Especialização
id_pessoa chave primaria,
id_pessoa referência a tabela Pessoa

Cliente {id_pessoa, limite_credito, credito...} // Especialização
id_pessoa chave primaria,
id_pessoa referência a tabela Pessoa

Funcionario {id_pessoa, id_supervidor, id_departamento, id_cargo...} // Especialização
id_pessoa chave primaria,
id_pessoa referência a tabela Pessoa

Fornecedor {id_pessoa...} // Especialização
id_pessoa chave primaria,
id_pessoa referência a tabela Pessoa

Endereco {id_endereco, id_pessoa...}
id_pessoa referência a tabela Pessoa

Telefone {id_telefone, id_pessoa, ddd, numero...}
id_pessoa referência a tabela Pessoa

Email {id_email, id_pessoa, descricao, tipo...}
id_pessoa referência a tabela Pessoa

Tem gente que inclui campos Tipo (Fisica ou Juridica) e cpfCnpj (cpf ou cnpj) na tabela Pessoa e elimina a tabela Fisica e Juridica, mas fazendo isso, você tem que colocar o campo sexo na tabela pessoa e quando for cadastrar pessoa juridica este campo fica nulo (null). Eu particularmente não utilizo assim, já que o campo sexo define exatamente uma pessoa física, logo este campo não é comum para todos.

Agora este campo potencial eu não entendi!

Sempre que possível utilize o conceito de generalização/especialização porque com isso reduz a possíbilidade de haver uma inconsistência de dados no seu banco. No último link eu expliquei sobre inconsistência de dados ( http://www.activedelphi.com.br/forum/viewtopic.php?t=48200&highlight=pessoa )
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Sáb Abr 10, 2010 4:06 pm    Assunto: Responder com Citação

agora sim deu uma boa clareada nas idéias...

mas precisa criar estas tabelas separadas (telefone, endereço, email..etc)?? não pode ficar na tabela pessoa que é a generalizada?

sobre o campo ''portencial'' eu vi um um sistema e achei interessante a idéia....seria tipo para qualificar o cliente

ele pode ser ruim, bom, ótimo

por exemplo o cliente vai comprar na loja, geralmente as pessoas levantam a ficha do cliente, pegando referencia em outras lojas,,,,se o cliente paga tudo direitinho, ele é um cliente bom, agora se em alguma loja, deu trabalho pra receber, ou a pessoa ainda esta devendo...ele é um cliente ruim
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2, 3  Próximo
Página 1 de 3

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB