I am taking a course on data warehousing. Currently, I am reading through Ralph Kimball's Data Warehouse Toolkit.
I understand that a degenerate dimension is a dimension key that is stored in a fact table. It does not join to a corresponding dimension table because all of its attributes have already been placed in other analytical dimensions, thus eliminating the need to join to another dimension table.
What I do not understand is when I should make something into a Degenerate Dimension as opposed to having it as a "normal" dimension and linking it to the fact table via a Foreign Key?
Best Answer
These are the hints:
The dimension consists only of natural key (e.g. invoice's or order's number) and contains no other attributes (because they've been placed in dimensions of their own).
The dimension table grows proportionately with the fact table, e.g. every time you insert new order lines into the fact table, you have to insert new
OrderNumber
dimension rows.You never use the dimension to filter data when populating a report and it makes no sense to use its values as a row header.
Read Design Tip #46: Another Look At Degenerate Dimensions from the Kimball Group