Как правильно организовать такую БД?
Если нет проблем с местом - я бы хранил все.
Мало ли. Для разборок может пригодится.
А так - эти объемы для современных СУБД ерунда, семечки.
Обычно для таких задач организую отдельную таблицу для импорта данных. Запихиваю туда всё, что пришло извне. Затем обрабатываю в отдельном потоке (нескольких потоках): записываю только нужные данные в основные таблицы. При этом ставлю флаг или  сообщение об ошибке у обработанных записей таблицы импорта. Потом проще разобраться, что обработалось, а что нет и почему. И не придётся повторно загружать внешние файлы.
Когда процесс отлажен, ставлю периодическую задачу на подчистку (или архивацию, если нужна будет сверка) старых данных в таблице импорта. Можно запускать в пром.