I'm designing the database schema for a CRM. It has the following tables: users
, organizations
, contacts
, addresses
, organization_types
.
organizations
might be a company, a non-profit or a individual.
users
have a many to many relationship with organizations
. The reason is because one company, for example, can have a salesman and a manager on the app with two different logins. On the other hand, there is the possibility that a salesman is doing sales for two different companies.
contact
and addresses
have a one to one relationship with organizations
. My client only want a organization to have one of each of those.
I designed it in a way that a organization
can also be a client, that would belong to another organization
. That would mean that the organization table had a one to many relationship with itself.
That made sense to me because they seem to be the same entity. A client will also need a contacts
and addresses
table and it could also be a company, non-profit or individual.
The point to consider that another developer raised is that with time, it would be expensive to query the database to differentiate organizations that are our clients from the ones that are clients from our clients.
What is the best approach? Would it be better the make a client_organizations table and separate those two?