Database design: Is there a much better way on this current relationships?
True story: I was a student at my school, then I taught there. Then one of the teachers took my class. You need to account for silliness like this. 

And a faculty member or student isn't necessarily a user either.

Use table inheritance.

Faculty : Individual : Party

Student : Individual : Party

Where : means inherits. 

Party hasOne User

A contact is a relationship between two parties:

Party hasMany ContactRelationships belongsTo Party

See Ready-to-Use Database models example for reference models.