* Analyze your business requirements thoroughly
* Build or simulate a star or snowflake schema
* Create shared dimensions unless you have a strong business reason to use private dimensions
* Create multiple hierarchies of a dimension rather than several independent dimensions from the same data
* Choose the dimension type based on:
- Business problem you want to model
- Structure of existing data
- Type of hierarchy
- Relationship of members in hierarchy (single or multiple entities)
- Characteristics of members (data and member properties)
- Rollup characteristics
- Analysis requirements like presentation on multiple axes