Most business application has 3 essential components.
1. Some data Store that will contain the business specific data.
2. Some business logic that will govern how to enter, retrieve and interpret the data in the data store.
3. A meaningful display of this information to the user.
so I can say we need three things -
1. Data Store
2. Data Access
3. Business Rules/Logic + Validations
4. Web pages to present it to user.
The store could be any database. rest three have to be implmented in order to have our application working.
Now we can put all this code into one big project and get the things to work, but that would lead to some problems.
1. High degree of coupling between modules with separate and dedicated functionality.
2. A small change would need the change in complete application and even recompiling in some cases.
So why not we design the system in such a way that all the modules in independent of each other. independent in terms of extensiblity i.e. change in one area will not need change in any other area. Secondly resusability i.e. if we design the modules independetly then each module can then be resued independently and finally the best part if i need to replace or enhance one area I dont have to redo the complete application. i will change only the required tier.
Now coming on how to do it, its simple. identify what falls in which category and have each tier implemented as a separate solution.
Here are two toy projects that will give you a very good idea on how things are done in n-tier architecture.
YaBlogEngine - A Tiny Blog Engine written in ASP.NET/C#[
^]
YaMessaging - A simple e-mail like messaging application[
^]
P.S. I hope this was helpful and informative for you. please let me know if you have any confusion and or question.