separation of the logical view of data (definition) from its implementation (app programs)
separation of abstract data properties from concrete details of its implementation or storage
a data model is used to hide storage details and present the users with a conceptual view of the database