• +1 for surrogate keys. the keep the fact table small (in terms of bytes, not columns) and provide you with a level of 'protection' from changes in the source systems. E.g. if you acquire a new company and their system has customer references which are alpha-numberic and yours are numeric. If you did't use surrogate keys to link to the customer dimension you would have to update all your fact table DDLs.

    Keys into dimension tables should have no business meaning