well, usually in advance software design we use laying to apart software tasks where application works independently in layers. It's contains of min 2-N layers (Microsoft has 4)
but usually 3 as u mentioned.
= User Interface
= Business Layer or Logic
= Data Access
let me explain u in an instance:
u have a ASP.NET page where users register.
u have some rules like checking if user is able to register according to her/his birthday & ...
1.ur ASPX file is ur UI
where ppl see.
2. u use some classes & functions to check the rules (age story) its a separate project or at least another file
3. u have a different project who is the only responsible for ur Data part.
its like this:
1- user see the page & enter some data & PUSH REGISTER BUTTON
2- ur page sends user entered data to BL
& it checks some rule like age, & if it was ok, calls the DL
methods to add data to DB, or if its not ok, doesnt send & may gives a report back to user in UI
3- ur DA
is only doing CRUD operations such as making connection & executing some T-SQL commands.
Its a long story u should go for, not too simple to reply u here, but not as hard as u cant...