I'm not sure I understand why there is a conflict. Do you know that keys, both primary and foreign, can just as easily be string types as number types? You can take advantage of both systems by making the job type field the primary key in the job type table and the foreign key in the employee table.
The advantage of this approach is that you do not need to join the job type table back to the employee table to get a descriptive name for the job type, while you are still using the database to provide important referential integrity to your database design.
The disadvantage is that if you have a lot of employees, you will use a little more resources for storage, and if you change the job description, you will need to cascade the changes in the employee table.
While integers are usually used as primary keys (and for some frameworks this is required), there is no rule that says it should be that way.
source share