There are many ways to do this. Here is one approach:
Instead of thinking about different types of users, you can think about the roles that the user has.
For example, if a user can be a master of a butcher, a baker, or a candlestick, you can have four tables: users , butchers , bakers , candlestick_makers . The last three role tables have a user_id column; they "belong" to the user.
If you need to ensure that a specific user has only one role, you will need to do this in the application (since this database schema allows multiple roles for one user).
This method is good if there are many things in these role tables. If not, leaving some NULL columns in the users table will probably not kill you.
source share