Abstração simples e pura de Pessoa e PessoaJurídica - quais problemas poderia ter?

Pessoal

sei que já tem vários tópicos discutindo essa abstração

tenho a intenção de criar uma classe Pessoa (para pessoas naturais) e outra PessoaJuridica para (empresas, ongs, fundações, etc)

não tenho a intenção de persistir no banco separadamente, uma tabela empresa, outra tabela ong, outra tabela fundações e por aí vai

não tenho a intenão de persistir no banco separadamente, uma tabela cliente, outra tabela fornecedor, outra tabela vendedor, etc

o que vai dizer se uma pessoa é cliente ou é fornecedora,

é sua chave primária inclusa na tabela venda ou na tabela fornecedor

sendo que na realidade é assim que funciona

qual problema poderia ter?

Sua classe PessoaJuridica herda de Pessoa? Então os problemas que você pode ter no futuro são aqueles que aparecem quando favorecemos herança sobre composição.

Quero chamar a atenção pra um detalhe:

[quote]o que vai dizer se uma pessoa é cliente ou é fornecedora,

é sua chave primária inclusa na tabela venda ou na tabela fornecedor [/quote]
E se a chave primária estiver inclusa nas duas tabelas? Nessa situação, você terá um cliente que é fornecedor também. Isso é perfeitamente possível.

oh amigão

Pessoa

e

PessoaJuridica

serão classes independentes, sem comunicação

não vejo a necessidade de ficar criando tb_cliente, tb_fornecedor, tb_vendedor

vou cadastrar todas as pessoas naturais em tb_pessoa

e

todas as pessoas jurídicas em tb_pessoajuridica

o que vai dizer se determinada pessoa é cliente ou fornecedor ou vendedor ou transportador, ou usuário do sistema é

sua chave primária dentro da FK da tb_venda, tb_compra, tb_estoque, tb_frete

e na consulta SQL é que vai aparecer se uma pessoa já comprou, ou já vendeu, ou já transportou,

acho que assim fica bem limpo né?

obrigadão

Tomando a tabela de vendas como exemplo. Você terá só um campo pra gravar o cliente, cujo valor pode ser a chave primária de pessoa física ou jurídica, correto? Se for o caso, você pode ter alguns problemas caso um registro de pessoa física tenha como chave o mesmo valor de outro registro de pessoa jurídica.

Namastê Salamaleico

verdade verdade verdade

obrigado

o ideal então é criar
id_pf

e

id_pj

nas tabelas venda, compra, transporte, frete

[quote=Bruno Reis]Namastê Salamaleico

verdade verdade verdade

obrigado

o ideal então é criar
id_pf

e

id_pj

nas tabelas venda, compra, transporte, frete[/quote]
Mas aí temos outro problema: uma venda só poderá ter um cliente ao mesmo tempo, e ele só poderá ser pessoa física ou jurídica. Fatalmente teremos um campo em branco por registro, sem utilização.

campo null

é problema né?

foi mal

antes de postar imaginei isso

vou ter que pensar noutra coisa né

sou estudante, venho de delphi

tô tomando muitos “tapas” do java e de engenharia

rs

Obrigado amigo

vou pensar noutro modo então

se tiver uma sugestão, por favor,

aceito de coração rsrsr

Você pode unir sua solução à tradicional. Crie uma tabela de pessoas, onde cada uma tem um tipo (física ou jurídica). Unindo as duas tabelas, você pode manter apenas um campo na tabela de vendas, por exemplo.

mas

não vai contra a realidade?

uma pessoa jurídica

ter

cor dos olhos

altura

não vai gerar campos null do mesmo jeito?

É… Não tinha pensado nisso. O que dá pra fazer é colocar esses dados particulares em outra tabela (exemplo, detalhes_pessoa_fisica), num relacionamento 1:1.

ótimo

uma classe

DetalhePessoaJuridica

ou DetalhePessoa

onde diz se é PJ ou P

verdade

vou pensar nisso!

obrigadõa!!!

obrigado!

Você pode manipular as classes de negócio diretamente dentro da classe que trata os eventos da janela. Se um dia você precisar, refatora pra incluir o controlador.