Suggestion for a contact management database design
I'm seeing a few misses.
First, the role table.  If one user can belong to more than one role, you're going to need another table between role and user.  1 table to store the roll(like you have already) and another to store a junction table which will store the relation between a role and a user.  That table would probably only have two columns, role_id and user_id.  The user table would not need to identify the role unless it was a primary role or default role.  That could also be accomplished in the junction table. 

Similar situation with Company - Member Type.  Since you only have a single column in the company table, you will only be able to store one member type per company.  If the requirement is to have companies be able to be assigned to more than one member type, you will need a junction table to store company|member_type relationships.  

One last thing I noticed, is there is currently no relation between Employee and Company other than the address.  That will definitely get confusing.
Since you want contacts to be associated with multiple companies, you will need another junction table to store the contact_id | company_id relationship. There might be a clever solution using your employee table.  Since that essentially is the only direct connection between employee and company, maybe just change that to the junction table, company_employee.  Then add a boolean/bit column (IsEmployee) to indicate whether the contact is actually an employee of the company.