It always depends. But I would say that the most certain is a Pessoa
entity that can PessoaFisica
and PessoaJuridica
find it interesting and have other objects with roles that that person performs in your organization. Almost always having only the repeating roles of my person data in those entities is wrong by keeping different objects in the system for the same real object.
The person is a clear and obvious object of any model. Paper data is not always so obvious, we have to think of it as special documents because they do not even exist as real objects.
Then you should have tables of Cliente
, Colaborador
, Fornecedor
, etc. even because one person may have more than one role.
Conceptually, it is most correct to have everything separated. If for reasons of performance do not want to have separated until could have the papers next to the object of the person, but this is not universally more interesting not even looking at performance. But each time this is less necessary because of technologies that behave closer to how memory is. Especially on disk it may have useful to table a single table, but it is not easy to manage it.
In memory you would usually have to keep these objects separate and there is not much of an advantage to put it all together.
But what's best is the right concept, with it you can do whatever you need in an organized and easy way, when the concept is wrong all maintenance becomes complicated or almost impossible, except for changing everything completely. / p>
What is almost always wrong is having the tables of the roles and not having the person related, ie repeat the same person in all tables, as almost all systems do, a penalty.