You could use ENUM for simple things like Male/Female. But it sounds like you have a lot of branching (if its male you have one type, female another.) I wouldn't do a two table approach. The best way is to figure out how to best organize your main table (each individual piece of clothing) and work backwards from there. I'd make that table look something like this: -id (autoinc INT) <- not required btw but makes life much easier -description -garment_id -armor_id -buff_id -color_id Make a garments table: -id (autoinc INT) -description ('polo shirt') -gender (ENUM 'male','female','unisex') -type_id (use a garment_type table with entries like "pants","shirts","hats",etc) For attributes, it sounds like there is a 1 to many relationship (the same shirt could be 'warm', 'fuzzy','plaid','buttoned', who knows) So you would all of those attributes in a table then add another table to link those attributes with a specific garment_id.