A data model is a notation for describing data.
- It makes sure that all applications see clean and organized data
It consists of 3 parts
- Structure of Data
- Operations on Data
- Data Constraints
Structure of Data
- conceptual model (schemata, etc)
- how data should be physically organized? i.e. how is it allocated in memory
- rows and columns?
- nodes and edges?
- key-value pairs?
- sequences of bytes?
Operations on Data
- what queries are efficiently supported by this organization and what are not?
It can be
- some limited set of queries to retrieve and modify the data
- limitation is needed to be able to describe operations at a high level
Questions to consider
- how hard it is to update or add?
- do I reorganize the data? how hard is it?
- find the value of key $x$
- find the rows where column "Lastname" is "Johnson"
- get the next $N$ bytes
Constraints express what are the legal structured we're allowed to create
- all rows must have the same number of columns
- all values in a column must have the same type
- a child can't have two parents