If you are trying to desing a database, I'd do it that way :
Companies = [id, name]
Contacts = [id, name]
Products = [id, name]
Adresses = [id, details]
CompaniesContacts = [contact_id, company_id]
CompaniesProducts = [product_id, company_id]
AdressesContacts = [contact_id, address_id]
References = [contact_id, referenced] // referenced is also a contact_id
Also, I'd recommend using UML. It's just a quick answer, try to update your question and I'll update it a bit.