Data-Access-Layer
Business-Layer
Presentation Layer (User Interface)
Data-Access-Layer is not necessarily a database. It could be an XML file. It could be an RSS feed. It could be an external application. It could be anything you like that gets data into your application.
So it's really:
[Data-Source]
Data-Access-Layer
Business-Layer
Presentation Layer (User Interface)
where [Data-Source]
is database, XML, RSS, whatever... I prefer to think of the data-source itself as a driver, not a layer.
The flexibility of this approach allows you to swap out your data source without touching the rest of the application. So if you began by using XML files as your back-end data, and then you want to change it to a database instead, you only touch the DAL layer - the rest of the application doesn't care as long as it still gets the data in the same format.