Основные данные отношения, указывающие на себя? - PullRequest
0 голосов
/ 23 июня 2011

Мне нужно создать объект Core Data, который имеет отношение «один ко многим» с самим собой (подумайте о папке, содержащей подпапки: мне нужно получить доступ ко всем подпапкам определенной папки, а также к родительскому элементу любой подпапки).

  1. Существует ли простой способ сделать это, используя стандартные отношения базовых данных, без вспомогательной сущности «один ко многим»?

  2. Полагаю, я могу легко выполнить этот "старый путь", используя свое собственное поле ключа - но есть ли простой способ определить автоинкрементное поле в Базовых данных? (Я могу использовать основанное на времени значение, а не автоинкрементное, но мне не нравится это решение по нескольким причинам).

1 Ответ

3 голосов
/ 23 июня 2011

Базовые данные не имеют полей. Не пытайтесь думать, что Core Data - это термины процедурного, не объектного API, такого как SQL. Вы просто запутаете себя.

Создать базовые отношения в Базовых данных - тривиально. Чтобы сделать сущность для моделирования структуры каталогов, все, что вам нужно, это:

Folder{
  name:string
  parent<<-->Folder.children
  children<-->>Folder.parent
}

У любой конкретной папки есть один родитель и несколько детей.

Не путайте сущности в модели данных с графиком живых объектов. Сущности в модели данных просто определяют абстрактные атрибуты и отношения одинаково абстрактных сущностей и могут быть очень простыми. Реальный живой график так же сложен, как и моделируемые им явления.

например. В этом случае модель данных будет такой же простой, как и выше, одна сущность, с одним атрибутом и двумя связями - все для себя. Живой граф будет таким же сложным, как и файловая система, моделируемая тысячами уникальных Folder объектов и миллионами взаимосвязей.

...