2011-01-26 5 views
5

SQLite 기반 테이블 구조에서 핵심 데이터 모델로 이식하려고하는 데이터 모델이 있습니다. 내 SQLite 구조에는 영역 테이블과 TransitLogs 테이블이 있습니다. TransitLog는 다음을 포함 할 수 있습니다 (내 sqlite 스키마에서) start_zone_id end_zone_id핵심 데이터 동일한 엔터티에 대해 여러 개의 관계가 있습니다.

각각은 영역 테이블의 외래 키입니다. 이 SQL에서 잘 작동합니다. 그러나 핵심 데이터로 이동할 때이를 모델링하는 방법을 이해하는 데 어려움을 겪고 있습니다.

내 첫 번째 시도는 나에게 startZone 및 endZone 관계 내 TransitLog 엔티티에 두 개의 관계를 가지고있다

(죄송이 내 첫 번째 게시물은 여기로 엑스 코드의 스크린 샷을 게시 할 수 없습니다) 영역에 그 시점 속성

내가 가진 질문은 startZone 및 endZone 관계 특성에 대한 역 관계를 처리하는 방법입니다. 나는 그들을 필요로하지 않습니까? 이 주제에 대해 읽은 문서 및 서적에서 항상 역관계를 사용하는 것이 가장 좋지만이 특정 상황이 적용되지 않으면 궁금합니다. 아니면 핵심 데이터에서 잘못 모델링 한 것입니다.

어떤 조언을 주셔서 감사합니다.

마이크

답변

3

당신은 startLogsendLogs 같은라는 TransitLog를 가리키는 영역 개체에서 두 개의 일대 다 관계를 가질 수 있습니다. 이것들은 각각 startZoneendZone의 역이됩니다.

+1

CoreData가 많은 세트를 삭제할 때 CoreData가이를 업데이트 할 수있게하려면 컴파일/구문에서 절대적으로 필요한 것은 아니지만 역 관계가 필요합니다. –

+0

구역에서 TransitLog로 갈 필요가 없다면 역관계없이 할 수 있습니다. TransitLog를 삭제하면 startZone 및 endZone에 영향을 미치지 않습니다. 그래서, 그것은 당신이 반비례 관계를 생략하는 것이 좋을 것 같습니다. 그러나 각 존에서 전송 로그가 몇 개 있는지 계산하는 것이 좋다고 생각한다면 역관계를 추가하고 나중에 마이그레이션 작업을 절약 할 수 있습니다. – westsider

1

감사합니다. 두 답변 모두 많은 도움이되었습니다. Westsider는 맞습니다. 저는 현재 Zone에서 TransitLogs까지 트래버스 할 필요가 없으므로 궁금합니다. 그러나 그것이 내가 언젠가 그것을 필요로 할지도 모른다라고 생각하는 것은있다 (수천 명의 사용자는 희망을 가지면서 그것을 외쳤다.)) 아마 지금 그것을 모델화하는 것이 더 좋다.

답해 주셔서 다시 한 번 감사드립니다.

2

사소한 모델 버전 관리 및 마이그레이션은 실시간 싱크가 될 수 있습니다 - 특히 처음. 그런 이유로 애플이 그것들을 사용할 것을 권장 할뿐만 아니라 역 관계를 추가 할 것을 권한다.

그렇다면 반비례 관계를 추가하는 것이 의미가없는 경우가 하나 이상있는 것으로 나타났습니다. 모든 것이 제대로 작동합니다. 그러나이 경우에는 반비례 관계가 인 경우이 유용하거나 필요하다고 생각하는 시나리오를 찾기가 매우 어려웠습니다 (남아 있습니다).