2011-01-26 20 views
5

Mam model danych próbuję przenieść z tabeli SQLite na strukturę modelu danych podstawowych. Moja struktura SQLite ma tabelę stref i tabelę TransitLogs. TransitLog może mieć następujące elementy (w moim schemacie sqlite) start_zone_id end_zone_idDane podstawowe wiele relacji do tego samego podmiotu

Każdy z nich jest obcym kluczem do tabeli stref. Działa to dobrze w SQL. Ale przechodząc na Core Data mam problem ze zrozumieniem, jak to modelować.

Moja pierwsza próba ma mnie posiadające dwie relacje w moim tranzyt Podmiot o relacji startZone i endzone atrybuty tego punktu do Strefy (przepraszam nie był w stanie umieścić zrzut Xcode, ponieważ jest to mój pierwszy post tutaj)

Mam pytanie, jak sobie poradzić z odwrotną relacją dla atrybutów relacji startZone i endZone. Czy ja ich nie potrzebuję? W dokumentacji i książkach, które czytałem na ten temat, najlepiej zawsze stosować odwrotną relację, ale zastanawiam się nad tą szczególną sytuacją, jeśli nie ma ona zastosowania. Czy po prostu modeluję to niepoprawnie w danych podstawowych.

Dzięki za radę.

Mike

Odpowiedz

3

Można mieć dwa oddzielne do wielu relacji w podmiot Strefie które wskazują na tranzyt, zwany coś startLogs i endLogs. To byłyby odwrotności odpowiednio dla startZone i .

+1

Należy zauważyć, że relacje odwrotne, chociaż nie są absolutnie wymagane w sensie kompilacji/składni, są niezbędne, aby umożliwić CoreData aktualizację wielu zestawów, gdy ten jest usuwany. –

+0

Jeśli nigdy nie będziesz potrzebował przejść od stref do TransitLogs, możesz obyć się bez odwrotnej zależności. Nie wydaje się, aby usunięcie TransitLog miałoby jakikolwiek wpływ na jego strefę startową i strefę końcową. Wydaje się więc, że dobrze byłoby pominąć związki odwrotne. Jeśli jednak myślisz, że kiedykolwiek będziesz chciał, powiedz, ile dzienników tranzytowych pochodzi z każdej strefy, możesz teraz dodać relacje odwrotne i oszczędzić sobie później wysiłku migracyjnego. – westsider

1

Dzięki chłopaki - obie odpowiedzi bardzo pomogły. Westsider ma rację, nie muszę obecnie przechodzić ze strefy do TransitLogs i dlatego się zastanawiałem. Ale biorąc pod uwagę, myślę, że jest możliwe, że będę ich potrzebował w pewnym momencie (tysiące użytkowników domagają się tego z nadzieją;)), więc prawdopodobnie lepiej będzie teraz go wymodelować.

Jeszcze raz dziękuję za odpowiedzi.

2

Niematerialne modelowanie wersji i migracja mogą być pochłanianiem w czasie rzeczywistym - szczególnie za pierwszym razem. Z tego powodu, a także, że Apple zaleca ich używanie, polecam dodanie odwrotnych relacji.

Powiedziałem, że znalazłem przynajmniej jeden przypadek, w którym po prostu nie ma sensu dodawać odwrotnej zależności - i wszystko działa dobrze. Ale w tym przypadku było (i pozostaje) niezwykle trudno znaleźć scenariusz, w którym odwrotna zależność byłaby przydatna lub konieczna.

Powiązane problemy