At school, I learned that every databasetable should be an object in my model.
So you have not studied object orientation? Inheritance? Matching multiple types of objects with a single table? Only a simple βstupidβ each table is one object? There are more logical ways of matching objects. All with their different good and bad sides (i.e. you choose them depending on the circumstances, among which the number of fields in each object).
I also learned that for each table (or model object) there must be a DAO created in DAL.
Go to school, demand to return the money - they were idiots. The generated DAO is bad for a start. It turns out worse to have one per object. CONFIGURATION trumps CODE - a common DAO can handle x different objects, depending on the configuration. Lot less code to test and download. Here's how the correct framework does it (e.g. Hibernate / NHibernate). You can easily write a DAL that contains about half a dozen methods that it provides during operations and processes an unlimited number of objects. At the beginning, you tell each DAL what object it should be processed with, and how so that it can generate the correct SQL, etc.
What is the best practice for handling this Bll 'problem?
Back to school, the basics of learning. Reading on O / R cards. Hibernate / NHibernate (you do not name the langauge you use), Toplink, etc.
If the bll needs a tablecontent from another table, where is the person in charge, what is the best way to get the content? Please ask the responsible BLL or go directly to the DAO?
Depends on the architecture. In general, a business object will be created from a factory, and it should only talk to the factory. Then the factory will deal with DAL - after and before that, do really interesting things, such as caching.
Read at Hibernate / NHibernate.
A good book is also the "old" Scott Ambler Building Works app, which works.