A '''data model''' is a [[model]] that describes in an abstract way how [[data]] is represented in an [[information system]] or a [[database]]. In general it describes the following [[aspect]]saspects:
# ''[[Structure]]:'': defines what the structure of the [[representation]] is. This should not only specify how data is represented but also how a [[schema]] can be specified that defines the structure of the data in a specific [[ user ___domain]].
# ''[[Integrity]]:'': provides a [[language]] for the [[definition]] of [[rule]]srules that restrict which [[instance]]sinstances of the defined structure are allowed.
# ''[[Manipulation]]:'': provides a language in which [[update]]supdates of the data can be expressed.
# ''[[Querying]]:'': provides a language in which the data can be queried.
An [[example]] is the [[relational model]] in which all data is represented by
[[mathematical relation]]s (or, to be precise, a slightly generalized version thereof).
It furthermore defines a set of specific [[constraint]]sconstraints ([[primary key]]s, [[candidate key]]s, [[foreign key]]s) and a general language for specifying constraints ([[first-order logic]]), and for [[manipulation]]smanipulations and [[query]]ingquerying the data the [[relational algebra]], [[tuple calculus]] and [[___domain calculus]] are introduced.
Other examples are the [[Functional Data Model]], the [[Entity-Relationship Model]] and the [[Object Role Model]] although these usually only describe a small [[subset]] of the aspects described above.