2011-09-02 8 views
4

두 권의 Books를 기본으로 사용하는 엔티티 라이브러리가 있습니다. 도서관이이 두 도서 목록을 유지하는 것이 중요합니다. 내 라이브러리 엔티티에서 각 목록에서 내 책 엔티티로 일대일 관계가 있습니다. 마찬가지로 Book은 "도서관"과 관계가 있습니다. 내 데이터가 데이터베이스에서 지워지는 데 몇 가지 문제가 있는데 데이터 무결성을 돕기 위해 역 관계를 설정해야한다고 읽었습니다. 그러나이 경우 책은 내 라이브러리 엔티티의 각 목록과 역 관계를 설정할 수 있기를 원합니다. 이것을 어떻게 할 수 있습니까?코어 데이터의 다중 역 관계

내 순진한 생각은 두 목록에 대한 관계를 구현하는 것입니다. 따라서 책에는 "libraryForList1"및 "libraryForList2"관계가 있으므로 각 관계에 대한 역수를 가질 수 있습니다. 코어 데이터 스펙에 따라 라이브러리 목록 중 하나에 책을 추가하면 해당 책 소유자로서 라이브러리를 자동으로 설정하므로이 속성을 실제로 참조 할 필요가 없습니다.

+0

http://stackoverflow.com/questions/4985075/core-data-inverse-relationship-for-two-relationships-with-same-type/4989413을 참조하십시오. 도서관이 서로 다른 두 가지 방식으로 도서를 소유 할 수 있다면 책은 두 가지 방식으로 도서관에 속할 수 있으며 둘 다 별도로 모델링해야합니다. – rgeorge

답변

5

귀하의 "순진한 첫 번째 생각"은 본질적으로 정확합니다. 귀하의 도서관 엔티티가 도서와 일대 다 관계가 2 개있는 경우 (ownedBooksborrowedBooks의 관계를 명확히하기 위해) 책 엔티티에 대해 관계 (owningLibraryborrowingLibrary)를 입력하면 Core Data가 도움이됩니다.

또한 이러한 관계의 삭제 규칙에 대해 생각해야 할 수도 있습니다 - 즉, 두 라이브러리는 제거 할 책이 ​​어떤 이유로 삭제 된 경우 owningLibraryborrowingLibrary에 대한 삭제 규칙은 가능성이 무효화이 될 것이다 목록에서 예약하십시오. 여전히 책이있는 라이브러리를 삭제하는 것은 좋지 않은 것 같습니다. 따라서 ownedBooksborrowedBooks에 대한 삭제 규칙은 이어야합니다. 거부 : 도서관이 책을 모두 차지하고 라이브러리에서 삭제할 때까지는 삭제할 수 없습니다.

+0

나는 옳은 길에 있다는 확신에 감사드립니다. – JPC