Могу ли я иметь внешние ключи? Это целесообразно с точки зрения производительности?
Да, и вы должны, если ваша бизнес-логика требует их. Даже не думайте о том, как «оптимизировать их», прежде чем полностью профилировать свое приложение и на 1000% уверены, что внешние ключи замедляют работу вашего приложения. Вы не хотите, чтобы ваше приложение доставляло результаты мусора быстрее, вы хотите, чтобы оно доставляло правильные результаты.
Какая часть кода должна заботиться о создании и обновлении всех таблиц? Допустим, у меня есть таблицы для «Корзина» и «Товар». В корзине есть предметы. Как мне кодировать адаптер БД для этих двух объектов.
Создание и обновление схемы базы данных - это задача класса, который вы расширяете с SQLiteOpenHelper
Я настоятельно рекомендую вам изучить учебник по базе данных Android и проверить книгу на Android для получения более подробной информации по этой теме.