• If you are doing data warehousing then I think surrogate keys are a must for two reasons

    1. Storage - particularly in large fact tables, a 4 byte int is going to be smaller and easyier to work with and so will the corresponding index you'll probably put on it.

    2. Unknown Records - You have a nice easy way to reference unknown dimension values

    I don't see any problem in a data warehouse of having some additional indexes to enforce integrity rules.

    OLTP maybe a different story but thats not my area of expertise. 🙂


    Kindest Regards,

    Martin