A '''Datadata access layer''' (DAL) is a [[layer (object-oriented design)|layer]] of a [[computer program]] which provides simplified [[access]] to [[data]] stored in [[persistent storage]] of some kind, such as an [[entity-relational database]].
This Datadata Accessaccess Layerlayer is used in turn by other program modules to access and manipulate the data within the data store without having to deal with the complexities inherent in this access.
For example, the DAL might return a reference to an [[object (computer science)|object]] (in terms of [[object-oriented programming]]) complete with its attributes instead of a [[row]] of [[Field (computer science)|fields]] from a database [[table (database)|table]]. This allows the client (or usinguser) modules to be created with a higher level of [[abstraction]]. This kind of model could be implemented by creating a class of data access methods whichthat directly reference a corresponding set of database stored procedures. Another implementation could potentially retrieve or write records on to or from a file system. The DAL, hides from the external world, this complexity of the underlying data store from the external world.
ConsiderFor thatexample, youinstead haveof tousing interactcommands from a specific table in the databasesuch (likeas ''insert'', ''delete'', and ''update)'' thento youaccess justa createspecific table in a database, a class and a few stored procedures could be created in the database,. whereyouThe callprocedures thosewould Storedbe Procedurescalled from a method inside the class. and class in return on the coding, sidewhich willwould return an object containing the requested values.
[[Object-Relational Mapping]] tools provide data layers in this fashion, following the [[Active record pattern|active record]] model.