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]]