I'm designing a data warehouse and I keep reading that there should be no relations between fact tables.

I'm sure everyone here is well aware that businesses are full of facts which are inherently related to each other, so how is one supposed to represent these relationships without relations between fact tables?

To give just a couple of simple scenarios, what if I have refund facts which each relate to a purchase fact? Or if I have page view facts (a large volume of) a small percentage of which relate to error facts?

  • 2
    Using one of your examples, what attribute of "page view" is used by "error" to reference the related "page view"? Probably a combination of dimensions, in which case the relationship only exists in your mind, while in the model the two facts are defined by the same set of dimension values.
    – mustaccio
    Apr 13, 2022 at 21:16

1 Answer 1


In the examples you give, the smaller "fact table" could just be a dimension of the larger fact table, which would remain a fact. Like so:

  • Sale = fact. Refund = dimension of sale
  • Page view = fact. Error = dimension of page view

It's fine to have large dimension tables. This is actually pretty common in your typical retail star schema. For example, customer table or product table are typically dimensions of sale, and can be quite large.

See these star schemas for example.

In terms of further reading - Kimball Group is often considered one of the best authorities on DW I believe. I have taken one of their courses and read their books. You could check out their site for more information. Hope this helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.