Multi-tier or n-tier software design is a buzzword in recent years. To recap it in few words, it divides functionality, components, and code for a projects. There are generally 4 of them ( some people define 3 tiers not mentioning data store)
1. Presentation Layer: This is the user interface. In this tier, the code defines what a user should see on the screen. To do so, it invokes the lower tier and get the data, shape and format it, maybe cast it considering its specific purpose and present data to user.
2. Business Logic Layer (BLL): The code that takes the data from data access layer ( generally in the form of relational data ) and exposes it to the Presentation Layer in a more abstracted and intuitive way, hiding low level details. ( such as database schema, constraints) Also this tier grants input validation and ensures that the input is safe and consistent.
3. Data Access Layer: The code that takes of retrieving and manipulating raw data in the data store. It gives commands to data store ( to an RDMBS ) to create, read, update and delete information. The developer that prepares this layer should have knowledge about exactly all internal details of database: its constraints, columns - their names and data types and specific information about how RDMS works.In .NET environment this can be achieved by ADO.NET
4. Data Store: This is where the data resides. This can be a RDMS, an XML file, a text file.
In small projects these tiers can be united, for example BLL and DAL can be implemented in a single class. However, in big projects that many developers work, multi - tier design with each tier is independent from the other ones is a very important and ease the work much.