Modelagem sistema controle de estoque, ordem de serviço!

Bom… Estou desenvolvendo um programa para controle de estoque, controle de ordem de serviço, contas a pagar e receber…

Cadastros: Funcionário, Produto, serviço, ordem de serviço, cidade, tranportadora, fornecedor, cliente, etc…

Movimentos: compra, venda, ordem de serviço, contas a pagar e receber.

Estou com algumas dúvidas a repeito do modelo desse sistema… Por ex. no caso dos cadastros de de Cliente, Funcionário, Tranportadora, etc… todos estão sendo reprensetados pelas classes (Pessoa - Fisíca e Juridica)… sendo diferenciados apenas pelo campo TIPO… Gostaria de saber se essa eh a melhor forma de modelar ou se alguém tiver outra solução…
Segue o modelo abaixo…

Obrigado

Diego Alves Brandão