• I'm curious as to why an attribute such as Student is getting it's own table. Is there more Student-related data that needs to be tracked?

    I'd be tempted to have a PersonType lookup table (Values: Student | Employee | Faculty); and a PersonType_id FK in the Person table. If people can have more than one type, then you can make the relationship Many-to-Many.

    Not sure if this would be an improvement over what you already have, but it might scale better, especially if you plan on adding more person types in the future (if you had 10 roles a person could play, instead of 10 tables you'd have 10 rows in a lookup table).