Базовые отношения данных против внешних ключей на основе сервера

У меня есть сложное приложение для iPad, которое переходит на использование Core Data. Я получаю данные с сервера, который имеет внешние ключи, встроенные в различные таблицы для представления отношений между таблицами (сущностями).

Когда я переписываю приложение для использования Core Data, должен ли я поддерживать структуру внешнего ключа и создавать свои собственные средства доступа или преобразовывать их в отношения Core Data или использовать оба? Кажется, удвоить работу. У меня уже есть данные для связи двух таблиц, которые мне потенциально необходимо хранить для данных, которые я отправляю обратно на сервер. Тем не менее, Core Data создаст свои собственные ключи для отношений. Это дублирует информацию и может выйти из синхронизации.

Я мог бы: 1. Сохранить существующие атрибуты для представления отношений между таблицами и написать свои собственные выборки по мере необходимости. 2. Постройте граф объектов, когда я получаю данные с сервера и использую основные взаимосвязи данных. 3. Используйте гибрид, иногда атрибуты внешнего ключа, а иногда и отношения в зависимости от необходимости.

Существует ли типичный подход, используемый для приложений Core Data, получающих большую часть своих данных с сервера?

1 ответ

Решение

Если вы собираетесь использовать базовые данные вместо sqllite, то преобразуйте их в базовые данные. Помните, Core Data - это не просто реляционная база данных. Он используется для сохранения графа объекта. Таким образом, способ размещения наших структур данных может быть совершенно другим.

Как правило, у вас может быть больше ненормализованных данных в приложении Core Data, но на самом деле вы должны переназначить свои данные так, как вы хотите, чтобы они использовались в вашем приложении. Тогда вы узнаете настоящий ответ. Тем не менее, я не думаю, что я бы оставил внешние ключи... Я бы использовал отношения, потому что именно так основные данные будут соответствовать лучше всего.

Другие вопросы по тегам