Can you create relationships BETWEEN contacts within the same module

Can you create relationships BETWEEN contacts within the same module

I am setting up my CRM, and I want to have a way to connect contacts within the same module.  Is there a way to do this?  If not - how do I decide how to split up contacts to make connections?  What are best practices for this?

We have clients who need to be connected to a referral sources and companies.  I want to be able to pull a report from a referral source and/or company that lists the related clients and jobs.  I'm not sure of the best way to set this up.