Моделирование отношений в базовых данных - PullRequest
0 голосов
/ 04 октября 2009

Я довольно новичок в Objective C и Базовых данных, и у меня возникла проблема при разработке случая, когда игроки объединяются один на один и получают несколько матчей, которые заканчиваются конкретным результатом.

В MySQL у меня были бы таблица Player (первичный ключ игрока, имя) и таблица соответствия (внешний ключ игрока A, внешний ключ игрока B, результат).

Теперь, как мне это сделать с Core Data? Я могу легко связать объект игрока с объектом соответствия, используя отношения. Но как мне смоделировать обратное направление для второго игрока? в сущности матча?

Игрок
Имя: Атрибут
Матч: Матч отношений

Match
Результат: Атрибут PlayerA: отношение к игроку (<- обратное к Player.Match) <br> PlayerB: отношение к игроку (<- обратное к ????) <br>

Было бы замечательно, если бы кто-то мог дать мне представление об этом!

Спасибо, Стиви.

1 Ответ

0 голосов
/ 04 октября 2009

Если в вашем матче есть конкретный домашний игрок и выездной игрок, вы должны использовать:

player.homeMatches <---->> match.homePlayer
player.awayMatches <---->> match.awayPlayer

Возможно, у вас еще есть:

player.matches

, если вам нужен поиск по всем совпадениям, и вы не хотите И свои поля поиска вместе. Или вы можете предоставить метод / readonly-свойство "allMatches":

- (NSSet *)allMatches
{
    return [[NSMutableSet setWithSet:self.homeMatches] unionSet:self.awayMatches];
}

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

...