Question: I am developing a MySQL db for a user list, and I am trying to determine the most efficient way to design it.

My issue comes in that there are 3 types of users: "general", "normal", and "super". General and normal users differ only in the values of certain columns, so the schema to store them is identical. However, super users have at least 4 extra columns of info that needs to be stored.

In addition, each user needs a unique `user_id` for reference from other parts of the site.

So, I can keep all 3 users in the same table, but then I would have a lot of `NULL` values stored for the general and normal user rows.

Or, I can split the users into 2 tables: general/normal and super. This would get rid of the abundance of `NULLs`, but would require a lot more work to keep track of the user\_ids and ensure they are unique, as I would have to handle that in my PHP instead of just doing a `SERIAL` column in the single table solution above.

Which solution is more efficient in terms of memory usage and performance?

Or is there another, better solution I am not seeing?

Thanks!

Answer: 
why not build an extra table; but only for the extra coloumns you need for super users? so 2 tables one with all the users and one with super users's extra info
If you want to have this type of schema. try to create a relation

like:

tb\_user > user\_id , user\_type\_id(int)   

tb\_user\_type > user\_type\_id(int) , type\_name

this way you will have just 2 tables and if the type is not set you can set a default value to a user.