A survey of data modeling
There are many different ways of modeling data. They all have their place, and all have places where they are a poor fit.
The spectrum of options below are defined mainly by the degree to which they differentiate between read and write models, and correspondingly how powerful-but-also-complex they are. "Model" in this case usually corresponds to a class, or a class with one or more composed classes.