title: Best practices for exposing multiple tables using content providers in Android
body: <p>I'm building an app where I have a table for events and a table for venues. I want to be able to grant other applications access to this data. I have a few questions related to best practices for this kind of problem.</p>
  
  <ol>
  <li><p><strong>How should I structure the database classes?</strong>
  I currently have classes for EventsDbAdapter and VenuesDbAdapter, which provide the logic for querying each table, while having a separate DbManager (extends SQLiteOpenHelper) for managing database versions, creating/upgrading databases, giving access to database (getWriteable/ReadeableDatabase). Is this the recommended solution, or would I be better off either consolidating everything to one class (ie. the DbManager) or separation everything and letting each Adapter extends SQLiteOpenHelper?</p></li>
  <li><p><strong>How should I design content providers for multiple tables?</strong>
  Extending the previous question, should I use one Content Provider for the whole app, or should I create separate providers for Events and Venues?</p></li>
  </ol>
  
  <p>Most examples I find only deal with single table apps, so I would appreciate any pointers here.</p>