In cases where you really have a “multi-valued” dimension, the Bridge table is usually the solution that Kimball recommends.
Your “Promotion” dimension is simply a record of each advertisement with its attributes (start date, end date, coupon code, POS promo code, ad name, etc.). Here, the relation from the promo to the product is not modeled, since it will be reflected in the fact table.
Promotion / Discount Size will look like (1 line for a unique planned share)
Promotion Dim ID
Promo Code
Coupon Code
Promo Start DTTM
Promo End DTTM
... etc ...
Your Trading Fact will look like this:
Tran Date
Tran Line #
Customer Dim ID
Product Dim ID
Promotion Group Dim ID
Net Sale Price
Average Cost
Discount Amount
The bridge table "Promotion Group" will then be a set of combinations:
Promotion Group Dim ID
Promotion Dim ID
, , , , . , .
, , Bridge, , , , .