I will have several different types of users that will use my system. For all users I need to store such things as username, password, email address, etc, but if they are a user of category A, I also need to store values for fields a, b, and c, but if they are a user of category B, I need to store values for fields d, e, f, and g.
USER
-------
id
username
password
CAT_A
--------
id
a
b
c
CAT_B
--------
id
d
e
f
g
EXTEND
--------
user_id
cat_id
EXTEND
--------
user_id
cat_a_id
cat_b_id
...
There are a couple common ways to map a hierarchy in SQL. Because SQL does not have a natural way to handle inheritance, each of these conventional methods have their own pros and cons. A few of the common ones are: table-per-hierarchy, table-per-type, and table-per-concrete-type, but there are probably several others. Here's an example of a table-per-type model (each type in your code maps directly to a table):
User
---------------
user_id (PK, auto-generated?)
username
password
CategoryAUser
---------------
user_id (PK, FK to User.user_id)
a
b
c
CategoryBUser
---------------
user_id (PK, FK to User.user_id)
e
f
g
h
To get all the category A users, do a select from User inner join CategoryAUser. Same thing for category B users. This model may or may not fit your needs. If it doesn't I would suggest search for other types of models mentioned above.