Práticas recomendadas para expor várias tabelas usando provedores de conteúdo no Android

Estou construindo um aplicativo em que tenho uma mesa para eventos e uma mesa para locais. Quero poder conceder a outros aplicativos acesso a esses dados. Eu tenho algumas perguntas relacionadas às melhores práticas para esse tipo de problema.

Como devo estruturar as classes de banco de dados? Atualmente, tenho classes para EventsDbAdapter e VenuesDbAdapter, que fornecem a lógica para consultar cada tabela, enquanto possuem um DbManager (estende SQLiteOpenHelper) para gerenciar versões de banco de dados, criar / atualizar bancos de dados, dando acesso ao banco de dados (getWriteable / ReadeableDatabase). Essa é a solução recomendada, ou seria melhor consolidar tudo em uma classe (ou seja, o DbManager) ou separar tudo e permitir que cada adaptador estenda o SQLiteOpenHelper?

Como devo projetar provedores de conteúdo para várias tabelas? Estendendo a pergunta anterior, devo usar um provedor de conteúdo para todo o aplicativo ou devo criar fornecedores separados para eventos e locais?

Na maioria dos exemplos, acho que lida apenas com aplicativos de tabela única, por isso gostaria de receber dicas aqui.

questionAnswers(5)

yourAnswerToTheQuestion