• I think I finally figured out why it is acceptible to use the surrogate key for the many-to-many relationship between dimensions like my dimNames and dimAddresses dimensions. It is because the assumption is that the query or report will group the results by the business key and therefore some combination of an aggregate function (MIN or MAX most likely) and a selective function (such as CASE) will allow the address to be associated with the name regardless of which specific row in dimNames the address is attached to.

    In my mind I was thinking that the address always needed to be associated with the "current row," but this clearly wouldn't always be the case with the surrogate key as the link.

    However, I think the general consensus for data warehousing purposes is that as long as the address is associated with the person via any row, not necessarily the "current" one, the address should be retrievable.