• In the case of data warehousing, I agree.  Each dimension should have its own table for performance and maintenance reasons.  More importantly, dimensions are often more than just code lookups and may have many other attributes for each value, specific to the dimension's type or meaning.  Generally speaking, the number of dimensions in a fact table is low so the number of tables is not great, at least for a group of similar fact tables.

    In the case of an operational database, I am quite happy with the one table approach.  Our table is properly indexed and performs well.  These are codes that simply replace repeating text and don't have distinct attributes for each type.  We would require more than 100 code lookup tables to track all the different code types in this database if we separated them out.  That would be a development and maintenance nightmare. 

    In any case, you can and should avoid the ugly WHERE clauses and poor performance with one or more user defined functions for code lookup and proper indexes on the code table.