The problem is that all the database work is performed in each client. For some complex queries, a significant amount of data must be examined, perhaps even the entire database. At a more technical level, it is difficult to manage independent database engines to be sure that no conflict arises when two clients attempt to access or update the same record. This is called the record-locking problem. Instead, it runs on the server computer that contains the database itself.
Some method is used to communicate between the application logic layer and the database service.
Only the database services are separated from the application in a two-tier design. The presentation and business logic layers remain very intertwined, and both continue to have intimate knowledge of the database. Two-tier applications are a bit more complex to write, but most development tools are equipped with a great deal of support in their integrated development environments to facilitate rapid programming. The only downside is cost. We have already seen how the database service can run on a different computer.