Я знаю, что это не сработает так, как я это написал, и я не вижу ответов, которые решают проблему для меня.Код слишком длинный для размещения здесь, но я включил ссылку на гист
https://gist.github.com/dhawkinson/41211d067ea91e0b7a5823067d2e39fe
Моя проблема заключается в следующем:
Я получаю список идентификаторов дляJSON-файлы, которые должны быть прочитаны и преобразованы в строки в таблицах с несколькими SQL.Список поступает из другого json-файла в виде массива идентификаторов файлов, которые нужно прочитать и преобразовать.
По требованию в таблицах SQL не должно быть строк с избыточными данными.Идентификаторы SQL генерируются автоматически.В API есть 3 категории сущностей:
- Учащиеся - студенты, проходящие курсы
- Курсы - Предлагаемые ученикам возможности обучения (у них есть дети, представляющие детали)
- Результаты - Пересечение ученика, проходящего курс, на определенную дату (у них есть дети, представляющие детали)
И ученики, и курсы могут появляться в результатах несколько раз, но только один разна конкретную дату.Но и ученики, и курс могут появляться только один раз в таблицах учеников и курсов соответственно (без избыточности).
Мои исходные данные - 4 результата json, что соответствует 4 идентификаторам в моем списке.Представление высокого уровня выглядит следующим образом (формат: Course_TimeStamp.json)
- id = 5sM5YLnnNMN_1525523468000.json (ученик = daffy@duck.com)
- id = 5sM5YLnnNMN_152son6868ученик = yogi@bear.com)
- id = 6tN6ZMooONO_1530730049000.json (ученик = daffy@duck.com)
- id = 6tN6ZMooONO_1541011649000.json (ученик = foghorn@leghorn.com) * 10*
Когда я анализирую и записываю данные, я получаю:
- 3 строки ученика (как и ожидалось)
- 3 строки курса (1 избыточно, недопустимо)
- 4 Строки результатов (как и ожидалось)
- Дети как для курсов, так и для результатов пишутся как положено.
Как решить эту проблему, учитываямои ограничения?Я подозреваю, что проблема избыточности может появиться в таблице Learners при некоторых неясных обстоятельствах, хотя это еще не так.Я использую одинаковый подход для всех таблиц.
Помощь приветствуется.Извините за многословие.