In star-schema design, dimension tables for fact table(s) are almost a must. In many business cases, the modeler can assume with acceptable confidence that certain dimension values will not change without control. For example the Gender is sometimes used as a dimension where in fact it could as well be a column in the fact table.
I am not sure if people always think about this. It is easier to just add a dimension and not think about it. However, as one of the Kimball rules, there should not bee too many dimensions for a fact table (I think the number he suggested is about 20).
I took gender as an example, but there are many other such as state name, city name, credit card type, etc.
My Question is:
What rule should one use to decide whether to embed/Collapse the value in the fact table vs. having a separate dimension for it? Some of the possible answers are: 1. When it does not change (e.g. gender). 2. When it has few possible values and have short length?
What else?
EDIT
Even though I considered the question answered, I still went to further research. There is a case when you have may have to use a dimension. The case is here: "Fact dimensions are frequently used to support drill through actions because the drill through action in SQL Server Analysis Services (SSAS) requires that you select the attributes from a dimension. So if you users want to see certain fields when they do a drill through, you must have those fields in a dimension."
The above was quoted from here Degenerate Dimensions
I think the subject needs further analysis for the interested person(s).