NSPredicate + itemLocations == местоположение - PullRequest
0 голосов
/ 06 октября 2011

У меня есть случай, когда у меня есть база данных предметов. Каждый предмет может иметь несколько мест.

Сейчас 2 вопроса:

1 Должен ли я создать связь, в которой каждый элемент связан с несколькими местоположениями, или есть способ записать его в одну строку с запятыми, например @ "45,34,32" (числа места).

Если я создаю отношения, это поднимает другой вопрос. Я записываю элементы из XML, так как я должен сформировать и записать это, потому что в этом случае сценарий может быть следующим

пункт 1 - имеет местоположение 1,2,3 позиция 2 - имеет местоположение 1,2,5

и как его вставить в базу данных.

2 Как на самом деле сформировать предикат

будет что-то вроде

@ "brand_id LIKE% @ AND item_stock! = 0 AND item_location.locations ==% i"

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

1 Ответ

0 голосов
/ 06 октября 2011

Это типичный пример, когда требуется связь (в данном случае, как я понимаю, «многие ко многим», поскольку каждый элемент может иметь несколько местоположений, и каждому местоположению может быть назначено множество элементов)

  1. Создание 2 сущностей "Предмет" и "Местоположение"
  2. Для «Предмета» создайте отношение «местоположения», которое является отношением ко многим "Расположение"
  3. Сделайте то же самое для сущности "Местоположение" (но наоборот)

Такая структура теперь может хранить отношения «многие ко многим».

Теперь, чтобы запросить такую ​​структуру, вы могли бы сделать что-то вроде этого (учитывая, что вы ищете объект "Item"):

@"brand_id == %@ AND item_stock != 0 AND ANY locations == %d"

Когда ваши данные поступают в виде XML, вы должны разобрать их и добавить каждое местоположение отдельно, а если такое местоположение уже существует в таблице расположений, просто добавьте его в набор отношений элемента

...