Modern IT systems manage an increasing amount of data, sometimes bound by sophisticated models, that require specific representations of the same information in order to perform translation between various software layers
As consequence, software developers have to provide descriptions in data and constraints/relations of these systems, this is what we call data-models
Not all the data-models are the same, one criteria we can use to differentiate them is the kind of relationships between the objects
- Models with one-to-many relationship ( aka "tree-like" )
- Models with many-to-many relationship ( aka "graph-like" )
The one-to-many relationship can be modelled using a tree structure which can be easily represented using the JSON data language
On the other hand, representing many-to-many relationships leads to design decisions in how to represent the data : in other words, a conditional expression of some edges and vertices.
Tree vs Graph
Thus, the technical choices made on the data modelling aspect of software design will affect the system behaviour, its overall performances, as well as the efficiency of the tools that support it.