I think the typical way of attacking a problem would be a second and third table. The second table would look like: flat_type table flag_type_id flag_type (like the column name in your original table) flag_type_description (BONUS: you can describe each flag) product_flag table product_id (fk to your original table) flag_type_id (fk to the flag_type table) flag_value (0, 1, or whatever you want to store here) The advantages with this method are several: 1) No wasted storage for all those NULLs where a flag is not needed 2) Should be very fast to lookup by product_id to get all flags 3) You can expand to an arbitrary number of flags 4) Your schema remains normalized Sean