So many system design decisions boil down to the same small set of [[Tradespace|trade offs]]:
- [[Data Normalization Levels]] - tolerating data duplication versus tolerating a ton of joins
- [[Cardinality]] - leading sometimes to the need for data normalization, but the lack of a 1:1 relationship between elements of a system is **always** a tricky bit of complexity.
- [[Hierarchy]] is a special case of this that's sometimes the obvious & best answer, but even then sometimes the choice of hierarchy isn't obvious
- Organizational basis - **I'm not sure what the right term for this is, but it's the crux of this note**. The choice of what to base your data organization on is difficult. Excel's PivotTables are an awesome way to show how the data _could_ be organized about different ways... but the data _at rest_ must necessarily be organized in some static way.
- This is also related to the [[Horizontal and Vertical Approaches]] topic, come to think of it.
![[PIVOT.excalidraw.svg]]
> [!example]
> The [[PDW]] - do you organize per **period** or per **definition**? Is it easier or more natural to interact with _all types of data in a given period_ or is it more likely to be easier/more natural to interact with _all periods of a given type of data_?
This is particularly problematic with non-rectangular data (meaning: data that couldn't obviously be placed in a single [[CSV]] file). What is the criteria for a new row? What is the criteria for a new _sheet_?
****
# More
## Source
- Self
## Related
- [[Model, View, Controller Pattern]]