Abstraction is the process of moving data from the application data layer to the enterprise data layer. It facilitates the migration of an application database into the enterprise environment. The purpose of abstracting data to the enterprise data layer is to reduce redundancy across all of the enterprise's data resources and as a byproduct, integrate the enterprise.

There are two kinds of data stored in traditional, stove-pipe application databases, functionally dependent and functionally independent. Functionally dependent data exist only in the context of the business function or activity. Functionally independent data exist in nature.

Functionally dependent data should be stored in the application data layer, where it has meaning. "Employee.NetPay, SalesRep.Quota and Contractor.Hours" data are functionally dependent data because these data exist in a business context and as a result of a business relationship.

Functionally independent data should be moved to a higher level of abstraction, the enterprise data layer. Person data, such as "Person.Name, Person.FirstName, Person.LastName, Person.DateOfBirth, Person.Gender," are functionally independent data because these data exist in nature.

The process of abstraction consists of moving those functionally independent attributes of a Person from their redundant locations in Employee, SalesRep and Contractor to the class table Person.

The functionally dependent attributes stay in the entities where they have meaning.

This allows a single entry describing "Bristler, Malcolm T." to exist in the enterprise data layer and be related to many entries in the application layer, such as Employee and SalesRep tables. Now when data relating to Malcolm change, there is only a single update made to the enterprise layer, instead of several changes to the application layer.