There is a fundamental concept that we need to cover first. The _logical_ architecture should keep business logic and data access logic separate. The _physical_ architecture may put them together on one machine since that will perform better.
One way to implement this is to follow the technique I discuss in Chapter 8 of my Visual Basic 6 Business Objects book. This provides logical separation between the business logic and the data access, but keeps them physically in the same class to optimize performance.
This was first published in March 2001