4. Data access tier: [e.g server running JDBC] all data I/O to data repositories handled here for example connects to database, fetches data from various sources including files, XML documents, spread sheets and so on.
5. Data tier: [e.g a database] application data is stored here in repositories - perhaps a database, perhaps text files, perhaps even an XML database like the Apache Groups XIndice
Take a note at point 5 in the first quote. The data tier can be a database, a text file, an xml database, pretty much any existing persistance system. Now the second quote says each layer should be interchangeable. Well your data layer is only interchangeable in so much as you are using a data layer that supports SQL.
Each layer should be interchangeable. This results in some further rules;
* Each layer should have a clearly defined data interface (API: application program interface).
* Layers should expect nothing of other layers except that they use the defined APIs to exchange data.
The data access tier, for example, should not expect a particular database, such as Oracle, to reside below it. In other words it should be possible to replace Oracle with an alternative database without any impact on the data access tier (or any tiers above it).