Отношение многие ко многим для одного лица - PullRequest
0 голосов
/ 10 марта 2011

В настоящее время я пишу свой первый проект с использованием основных данных, и мне не удается решить, как запросить связь между некоторыми из моих данных.

На языке sql у меня есть таблица Country, которая объединяетсяв таблицу CountryLink MM, содержащую следующие поля:

  • countryId1
  • countryId2
  • подшипник

Каков будет правильный путь ксмоделировать это в Core Data?

1014 * До сих пор я создал единое целое Страны и Countrylink объект (содержащее только поле азимута) и добавил два 1-ко-многим из страны в CountryLink ( «CountryLink1» и «CountryLink2»).

Я запустил проект и посмотрел на структуру базы данных Sqlite, созданную Core Data ( найдена здесь , используя this sqlite gui), и соединение MMтаблица кажется правильной (она содержит поля подшипников, CountryLink1 и CountryLink2), но я не уверен, как мне поступить при выполнении запроса на выборку для отдельного объекта NSManagedObject Country, чтобы вернуть массив связанных стран и их ориентиров?

Буду очень признателен за любую помощь или связанные ссылки.

Спасибо, Тед

1 Ответ

1 голос
/ 11 марта 2011

Сначала слово предупреждения:

Базовые данные не являются SQL. Сущности не являются таблицами. Объекты не являются строками. Столбцы не являются атрибутами. Базовые данные - это система управления графом объектов, которая может сохранять или не сохранять объектный граф, а может и не использовать SQL для этого далеко за кулисами. Попытка думать о базовых данных в терминах SQL приведет к тому, что вы полностью неправильно поймете базовые данные и приведет к большим трудностям и потерянному времени.

См. Текилла совет

Теперь, если забыть о SQL и думать о графах объектов, ваши объекты будут выглядеть примерно так:

Country{
    someAttribute:string // or whatever
    countryLinks<-->>CountryLink.country
}

CountryLink{
    countryID1:string // or whatever
    countryID2:string // or whatever
    country<<-->Country.countryLinks
}

По мере добавления объектов Country и CountryLink вы добавляете их в отношения по мере необходимости. Затем, чтобы найти CountryLink объекты, связанные с конкретным Country объектом, вы должны выполнить выборку для объекта Country для Country объектов, соответствующих некоторым критериям. Получив этот объект, вы просто запрашиваете у него CountryLink объекты в его countryLinks отношениях. И вы сделали.

Здесь важно помнить, что сущности в сочетании с управляемыми объектами предназначены для моделирования реальных объектов, условий или событий и отношений между ними. например человек и его машины. SQL на самом деле не моделирует и не симулирует, он просто хранит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...