Как мне моделировать относительные оценки между сущностями в CoreData - PullRequest
0 голосов
/ 18 января 2010

Я новичок в CoreData и изо всех сил пытаюсь найти правильный способ моделирования определенных отношений. У меня есть сущность под названием «Друг» с несколькими атрибутами, такими как «имя», «возраст», «пол» и т. Д.

Я хотел бы иметь возможность смоделировать счет между двумя экземплярами Friend, и у меня возникают проблемы с поиском наилучшего способа сделать это.

Например, для 3 друзей по имени A, B и C могут быть такие оценки:

A <-> B: 3
A <-> C: 2
B <-> C: 4

или в матричной форме:

  A B C
A 0 3 2
B 3 0 4
C 2 4 0

Лучшее, что я придумал, - это иметь сущность «Score» с целочисленным атрибутом «value» и двумя связями с «friendA» и «friendB» - но если это правильный подход, как мне моделировать обратное отношения на сущности Друга?

Большое спасибо заранее за любую помощь!

Ответы [ 3 ]

0 голосов
/ 18 января 2010

Вы могли бы создавать инверсии, используя ваш подход, имея два отношения ко многим от Друг к Счету (возможно, называемые "ScoresA" и "ScoreB").

Это немного отличается от того, что предлагает Маркус, поскольку вам придется объединить оба набора, чтобы получить все объекты Score для конкретного друга (или проверить оба набора, если вы хотите увидеть, был ли конкретный объект Score связан с конкретным Друг).

Ваш подход должен заключаться в том, чтобы вам было легче работать в вашем приложении. Однако Маркус может привести причины, почему его подход лучше, поскольку он буквально написал книгу о базовых данных.

0 голосов
/ 14 февраля 2010

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

Что мне еще предстоит узнать, так это отобразить количество побед против данного друга.

0 голосов
/ 18 января 2010

Ваше представление о сущности Score - лучшее, что я могу придумать без более подробной информации обо всем дизайне. Однако обратная связь достаточно проста.

Создание отношений «многие ко многим» между другом и счетом.

На стороне счета вы устанавливаете минимальное и максимальное количество на 2.

Установите для друга сторону не мин и не макс.

Это предполагает, что порядок друзей по отношению к счету не важен.

...