Should "Teachers" and "Students" be kept in a common "Person" table?
Yes, but the primary key should also include PersonType.
Then in each sub-table (Teachers, Students etc) you can create the same primary key which is also a foreign key on Person. This represents a 1 -&gt; 0..1 relationship. The PersonType field in this table should be constrained to a single value