 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
michael_jackson Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Sex Abr 09, 2010 11:04 am Assunto: cadastro de pessoas |
|
|
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 |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Sex Abr 09, 2010 11:07 am Assunto: |
|
|
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 |
|
 |
Lehapan Experiente

Registrado: Quarta-Feira, 16 de Junho de 2004 Mensagens: 401 Localização: Caxias do Sul - RS
|
Enviada: Sex Abr 09, 2010 11:09 am Assunto: |
|
|
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 |
|
 |
michael_jackson Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Sex Abr 09, 2010 11:35 am Assunto: |
|
|
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 |
|
 |
Lehapan Experiente

Registrado: Quarta-Feira, 16 de Junho de 2004 Mensagens: 401 Localização: Caxias do Sul - RS
|
Enviada: Sex Abr 09, 2010 11:39 am Assunto: |
|
|
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 |
|
 |
michael_jackson Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Sex Abr 09, 2010 11:47 am Assunto: |
|
|
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 |
|
 |
Lehapan Experiente

Registrado: Quarta-Feira, 16 de Junho de 2004 Mensagens: 401 Localização: Caxias do Sul - RS
|
Enviada: Sex Abr 09, 2010 11:48 am Assunto: |
|
|
Também trato os campos Boolean desta maneira ('S' e 'N') e como CHAR(1). _________________ Wilson Lehapan Junior, vulgo Paulista...!!! |
|
| Voltar ao Topo |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Sex Abr 09, 2010 12:08 pm Assunto: |
|
|
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 |
|
 |
aeciovc Colaborador

Registrado: Terça-Feira, 18 de Dezembro de 2007 Mensagens: 1042 Localização: Recife
|
Enviada: Sex Abr 09, 2010 8:19 pm Assunto: |
|
|
| 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 |
|
 |
aeciovc Colaborador

Registrado: Terça-Feira, 18 de Dezembro de 2007 Mensagens: 1042 Localização: Recife
|
Enviada: Sex Abr 09, 2010 8:21 pm Assunto: |
|
|
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 |
|
 |
Fabianoluizdb Membro Junior

Registrado: Segunda-Feira, 17 de Agosto de 2009 Mensagens: 396
|
Enviada: Sáb Abr 10, 2010 9:06 am Assunto: |
|
|
Concordo com o Colega acima
na empresa temos uma tabela chamada divisao, Divisao = char(2) e Descricao = Char(30) |
|
| Voltar ao Topo |
|
 |
michael_jackson Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Sáb Abr 10, 2010 2:25 pm Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Sáb Abr 10, 2010 3:09 pm Assunto: |
|
|
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 |
|
 |
michael_jackson Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Sáb Abr 10, 2010 4:06 pm Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|