We're setting up a new e-commerce site using SQL 7. We want to normalize using 3rd normal form, but wonder if we're getting a little "too fancy." Example: For the state field, in our shoppers table, we have StateID int; but, we would then have to use a (inner/left) join when reporting on this table and outputting the state to the user. In the past we used char(2) and the abbreviation for the state.

So my question is this: From a performance/maintenance standpoint, should we use char(2) and no join or int and join on the state table? (Same question applie to country and credit card type.)