Schema Chooser
A Quick Schema Chooser Cheat-Sheet¶
graph TD
Start([Start Schema Selection]) --> Q1{Is the database
small, simple, and
without relationships?} Q1 -- Yes --> Flat[Flat Model
Best for isolated data like
CSV files or bakery logs] Q1 -- No --> Q2{Is the primary goal
Analytics, BI, or
Big Data metrics?} Q2 -- Yes --> Q3{Does it require
complex normalization
to save disk space?} Q3 -- Yes --> Snowflake[Snowflake Schema
Best for advanced analytics
with child dimensions] Q3 -- No --> Star[Star Schema
Best for rapid querying
and reconstructing data marts] Q2 -- No --> Q4{Is the focus on
Object-Oriented
Programming?} Q4 -- Yes --> Relational[Relational Model
Best for state/behavior
focus, e.g., hospitals] Q4 -- No --> Q5{Is a tree-like
hierarchy needed for
fast additions/deletions?} Q5 -- Yes --> Q6{Can a child record
have more than one
parent category?} Q6 -- Yes --> Network[Network Model
Best for many-to-many
links, e.g., sports sites] Q6 -- No --> Hierarchical[Hierarchical Model
Best for banking, healthcare,
and telecommunications] Q5 -- No --> Start
small, simple, and
without relationships?} Q1 -- Yes --> Flat[Flat Model
Best for isolated data like
CSV files or bakery logs] Q1 -- No --> Q2{Is the primary goal
Analytics, BI, or
Big Data metrics?} Q2 -- Yes --> Q3{Does it require
complex normalization
to save disk space?} Q3 -- Yes --> Snowflake[Snowflake Schema
Best for advanced analytics
with child dimensions] Q3 -- No --> Star[Star Schema
Best for rapid querying
and reconstructing data marts] Q2 -- No --> Q4{Is the focus on
Object-Oriented
Programming?} Q4 -- Yes --> Relational[Relational Model
Best for state/behavior
focus, e.g., hospitals] Q4 -- No --> Q5{Is a tree-like
hierarchy needed for
fast additions/deletions?} Q5 -- Yes --> Q6{Can a child record
have more than one
parent category?} Q6 -- Yes --> Network[Network Model
Best for many-to-many
links, e.g., sports sites] Q6 -- No --> Hierarchical[Hierarchical Model
Best for banking, healthcare,
and telecommunications] Q5 -- No --> Start