Базовые отношения данных против внешних ключей на основе сервера
У меня есть сложное приложение для iPad, которое переходит на использование Core Data. Я получаю данные с сервера, который имеет внешние ключи, встроенные в различные таблицы для представления отношений между таблицами (сущностями).
Когда я переписываю приложение для использования Core Data, должен ли я поддерживать структуру внешнего ключа и создавать свои собственные средства доступа или преобразовывать их в отношения Core Data или использовать оба? Кажется, удвоить работу. У меня уже есть данные для связи двух таблиц, которые мне потенциально необходимо хранить для данных, которые я отправляю обратно на сервер. Тем не менее, Core Data создаст свои собственные ключи для отношений. Это дублирует информацию и может выйти из синхронизации.
Я мог бы: 1. Сохранить существующие атрибуты для представления отношений между таблицами и написать свои собственные выборки по мере необходимости. 2. Постройте граф объектов, когда я получаю данные с сервера и использую основные взаимосвязи данных. 3. Используйте гибрид, иногда атрибуты внешнего ключа, а иногда и отношения в зависимости от необходимости.
Существует ли типичный подход, используемый для приложений Core Data, получающих большую часть своих данных с сервера?
1 ответ
Если вы собираетесь использовать базовые данные вместо sqllite, то преобразуйте их в базовые данные. Помните, Core Data - это не просто реляционная база данных. Он используется для сохранения графа объекта. Таким образом, способ размещения наших структур данных может быть совершенно другим.
Как правило, у вас может быть больше ненормализованных данных в приложении Core Data, но на самом деле вы должны переназначить свои данные так, как вы хотите, чтобы они использовались в вашем приложении. Тогда вы узнаете настоящий ответ. Тем не менее, я не думаю, что я бы оставил внешние ключи... Я бы использовал отношения, потому что именно так основные данные будут соответствовать лучше всего.