If you intend to use the lookup table approach, I would recommend creating a foreign key constraint.

Without a foreign key constraint, there’s no validation against bogus specialism_id values in your teachers table.

This way you don’t lose out on the validation which an enum provides.