Nearly everything I read tells me to use integer surrogate keys for the dimension tables, combine all surrogate keys as the composite primary key in the fact table, and include business keys as attributes in the fact table and dimension tables. All of my data is coming from a single OLTP db in which each table has a bigint identity PK. In my fact table I'm going to have 8 or 9 bigint surrogate keys along with the same number of bigint business keys. Each dimension is going to have a bigint surrogate key along with a bigint business key. Wouldn't it be more efficient just to use my business keys as PK<->FK and cut the width of my tables? Thanks.