Seems like you have pressed the campaign dimension into "multi-duty". On the one hand, During sign up, you are...
tracking the referral (what was the influence that attracted the customer and/or got the customer to register). On the other hand, you are tracking whether promotional campaigns were taken advantage of by the customer when an order was placed/purchase was made.
When a customer signs up, does the "referral campaign" also get associated to any orders placed? Seems like the referral is an attribute of the customer registration event. Can a customer register more than one time? If so, maybe you need an event fact? If not, perhaps the referral should be an attribute about the customer. If you are managing campaigns for different intended reasons (generating registrations vs. generating sales), perhaps you have two different campaign dimensions? If that is not reasonable for your business, I am not seeing anything particularly "bad" about carrying a foreign key from customer to campaign.
Hope this helps you in your design.
For More Information
- Dozens more answers to tough data warehousing questions from Mike Lampa are available here.
- The Best Data Warehousing and Business Intelligence Web Links: tips, tutorials, scripts, and more.
- Have an DW tip to offer your fellow administrators and developers? The best tips submitted will receive a cool prize. Submit your tip today!
- Ask your technical data warehousing questions -- or help out your peers by answering them -- in our live discussion forums.
- Ask the Experts yourself: Our SQL, database design, SQL Server, DB2, object-oriented and data warehousing gurus are waiting to answer your toughest questions.
Dig Deeper on Oracle database design and architecture
Related Q&A from Mike Lampa
When trying to design a data warehouse, we often try to model the database on the operational data model. Are there any guidelines in trying to ...continue reading
What is a surrogate key in a table?continue reading
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.