As their name implies it. A data access layer has the responsibility to access data sources (e.g. a data base). Possible implementations of that layer may contain SQL statements. The business logic layer contains all the logic of the domain you're in. It gets the data needed for its business processes by using the functionalities of the data access layer. It doesn't care about how the data is grabbed from a source. The data access layer in contrast is not able to acccess the businnes layer (which lays "above" it).