Banco De Dados - O que compensa mais, criar um novo campo ou uma nova tabela?

Boas pessoal! Estou fazendo uma modelagem de um banco de uma distribuidora de bebidas em uma disciplina do meu curso e me deparei com uma questão. uma pessoa jurídica pode ser tanto cliente como fornecedor, e uma pessoa física pode ser tanto funcionário como um cliente, não esquecendo que um funcionário também poderá ser um cliente, dependendo do momento. em termos de qualidade, tanto em espaço de armazenamento quanto em velocidade de pesquisa, o que compensa mais? eu várias tabelas, funcionário, cliente e fornecedor, contendo os dados de PF e PJ (quando necessário). ou Criar um novo campo, “tipo”, que pode ser, cliente, funcionário, ou fornecedor?

Ja recebi uma sujestão de não fazer nem um, nem outro. pois o fornecedor poderá ser identificado nas compras relacionadas a reposição do estoque, e os clientes, nas encomendas (vendas)

Modelo BD feito no Erwin:

Gostaria de saber também se seria o caso criar um ItemDeCompra, como foi feito na venda e se o certo seria Produto - ItemCompra ou ItemVenda ao inves de Lote - ItemCompra ou ItemVenda.

obrigado pela ajuda. e agradeço correções sobre assuntos que não abordei aqui.

Creio que armazenar dados de funcionarios junto com clientes e fornecedores não seja uma boa idéia.

No meu sistema, tenho tabelas separadas para funcionários (que podem ser vendedores ou compradores) e outra que armazena os dados de Pessoas (Clientes ou Fornecedores).

Quanto aos movimentos de entrada e saída, utilizo apenas duas tabelas (Movimentos e DetMovimentos) que armazenam dados das compras e das vendas em um mesmo arquivo.

Tem razão, na questão de clientes, funcionários e fornecedores acho que farei isso msmo, mas você poderia explicar melhor as operações de entrada e saída? kra eu to muito perdido nesse diagrama, na matéria de Introdução a Sistemas de Banco de Dados, eu acabei ficando com uma deficiencia muuito grande, no aprendizado.

obrigado

A maioria dos sistemas que vejo por aí, faz como você, mantém compras e vendas em tabelas separadas. Mas como compras e vendas armazenam dados praticamente identicos relacionados com produtos e pessoas (clientes ou fornecedores), acho mais elegante manter estes dados em uma única tabela, que pode ser chamada de Movimentos.

Da forma mais simples esta tabela Movimentos teria um campo que determinaria se o registro é de compra ou de venda.

Sim, eu pensei, em fazer mais ow menos isso, eu estava usando o “ItemDeVenda”, como “Item”, e relacionando as duas tabelas, compra e venda, jah na questão de fazer uma tabela soh, isso não reduziria a performance da busca em banco? quando eu mencionei em fazer desse jeito, com “Item” para os dois, ao inves de “ItemDeVenda” meu professor disse que se criasse um campo a mais na tabela pra dizer se é compra ou venda, tornaria a pesquisa no banco mais lenta. Ahh, mais uma vz obrigado pela ajuda.