Как можно спроектировать сущность в Core Data с помощью общих отношений?

Допустим, вам нужно спроектировать приложение с объектом, который может быть связан с несколькими другими типами объектов. Например, у вас есть объект Picture, который можно связать с объектом Meal, объектом Person, объектом Boardroom, объектом Furniture и т. Д. Я могу придумать несколько различных способов решения этой проблемы, но - возможно, потому что Я новичок в Core Data - меня не устраивает ни один из них.

Самый очевидный подход, который приходит на ум, - это просто создать связь между Picture и каждым объектом, который поддерживает связанные изображения, но это кажется небрежным, поскольку изображения будут иметь несколько «нулевых указателей».

Другая возможность - это создание суперпользователя - Pictureable - или что-то в этом роде. Каждый объект, поддерживающий связанные изображения, будет подлогом Pictureable, а само изображение будет иметь однозначное соответствие с Pictureable. Я считаю этот подход беспокоящим, потому что он не может использоваться более одного раза в контексте проекта (поскольку Core Data не поддерживает множественное наследование) И способ, которым Core Data создает одну таблицу для любого заданного корневого объекта - при условии, что поддержка SQLite - у меня есть опасение сгруппировать целую кучу разрозненных субстанций под зонтиком общей суперсентальности (я понимаю, что размышления в этом направлении могут иметь привкус преждевременной оптимизации, поэтому дайте мне знать, если я глупец).

Третий подход заключается в создании составного ключа для изображения, который состоит из «типа» и «UID». Предполагая, что каждый объект в моей модели данных имеет UID, я могу использовать этот ключ для получения связанного управляемого объекта из экземпляра Picture и наоборот. Этот подход меня беспокоит, потому что кажется, что он может стать медленным при массовой выборке; он также не кажется мне достаточно естественным.

Четвертый подход - тот, который я склоняюсь к приложению, над которым я работаю, - это создание подэлементов для Picture и X (где X - это либо Meal , Person, Boardroom и т. Д.) И создадут индивидуальный контакт между этими субстанциями. Хотя этот подход кажется меньшим из зол, он все еще кажется непонятным моему неподготовленному глазу, поэтому мне интересно, есть ли лучший способ.

Править 1: В последнем абзаце я хотел сказать, что я склоняясь к созданию подчиненных сущностей только для изображения, не одновременно для изображения и X.

11
задан Joshua Pokotilow 8 July 2011 в 23:12
поделиться