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.
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.
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.
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.
É… 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.
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.