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