Допустим, у меня есть следующий тип странной базовой схемы данных:
В этой модели есть Счета и Действия, которые совместно используют родительскую сущность Item.Кроме того, существует сущность Отношения, которая моделирует отношения между объектами, а не позволяет базовым данным моделировать отношения, используя «реальные» отношения.Другими словами, сущность Отношения используется как своего рода «таблица соединений».
Учитывая эту модель, как я могу выбрать объекты, основанные на связанных объектах?Например, как мне получить все учетные записи, которые имеют активность, которая происходит сегодня?
Кажется, нет никакого способа сделать это в одном запросе на выборку.Лучшее, что я могу себе представить, - это сначала выбрать действия, которые происходят сегодня, затем отношения, где toId совпадает с идентификаторами этих действий, и, наконец, учетные записи, где идентификатор совпадает с fromId в отношениях.
3 запроса на выборку для этого неоптимальны.Нам понадобится поддерживать учетные записи и счетчики активности в сотнях тысяч, и выполнение всего этого извлечения может быть очень медленным.Также неудобно использовать NSFetchedResultsController с такой моделью.
Да, я знаю, что это не то, что Core Data любит делать, но по разным причинам, связанным с нашей серверной архитектурой и межплатформенной поддержкой, мы хотели быиспользовать эту модель данных и Core Data из-за всех приятных вещей, которые она предоставляет.Заранее благодарим за помощь.