2010-06-04 2 views
4

가능한 중복 :
Does every Core Data Relationship have to have an Inverse?Core Data에서 항상 양방향 관계가 필요합니까?

예 : 나는 두 엔티티 사람과 자동차가 있고, 그들 각각은 이미지의 엔티티와 연결되어야하는 경우 - 어떻게 이런 일이 같이 할 것 ?

지금 당장은 Person, Car, Image의 세 엔티티 만 만들 것입니다. 따라서 사람과 자동차는 이미지 개체에 연결할 수 있습니다. 이미지 엔티티와 1 : 1의 관계가 있습니다.

하지만 이제 핵심 데이터 관계자는 관계를 두 가지 방법으로 모델링해야한다고했습니다. 그게 바보 같지 않니? 다음으로 두 개의 이미지 엔티티가 필요합니다. CarImage 및 PersonImage. 또는 하나의 이상한 Image 엔티티는 두 개의 관계를 가지고 있습니다 : 하나는 Car 엔티티로, 하나는 Person 엔티티로.

어떻게 모델링 하시겠습니까?

답변

5

간략한 버전 ..

예 관계는 두 가지를 모델링 할 필요가있다. 아니, 두 개의 이미지 엔티티가 필요하다는 의미는 아닙니다. 한 사람이 이미지와 단방향으로 관계를 맺고 이미지를 삭제 한 경우 (반대 관계가 없으므로 사람이 아무 것도 모르는 경우) 그래프가 손상됩니다.

양방향 관계가 필요하지만 두 이미지 엔티티가 필요하다는 의미는 아닙니다. 당신의 이미지는 하나의 관계, 즉 사람이나 자동차 일 수있는 '컨테이너'를 필요로합니다 (공유 된 상위 엔티티가 도움이 될 것입니다).

긴 버전 .. https://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html#//apple_ref/doc/uid/TP40001857-SW6

+1

또는 Car' 부모 엔티티가 이해가되지 않습니다 너무 다른 Person'과''경우, 당신은'person'와'자동차 모두를 추가 할 수 있습니다 'Image' 엔티티와의 관계 - 특히 Person과 Car가 둘 다 같은 Image와 관계를 가질 수있는 경우. 그러나 상위 엔티티와 단일 '컨테이너'관계를 사용하는 것이 바람직한 방법이어야합니다. – Alex

+0

제발, 단일 용기 관계로 무엇을 의미하는지 설명해 주시겠습니까? 컨테이너 관계 란 무엇입니까? 어떤 종류의 조인 테이블이나 엔티티에 대해 말하지 않는다고 가정합니다. – dontWatchMyProfile

+0

@mystify 당신이 당신의 이미지 엔티티에서 하나의 관계가 필요하다는 것을 의미합니다. 이 하나의 엔티티는 사람의 이미지와 자동차의 이미지 모두와 역의 관계가 될 수 있습니다. 이렇게하려면 Person과 Car는 동일한 상위 엔티티가 필요합니다. 예를 들어 'DisplayableItem'(더 나은 이름 인 경우 Container가 내 대답에서 좋지 않은 선택 이었는지 생각할 수 있습니다)이라고 말하십시오. @Alex가 말했듯이,이 접근법은 당신에게 옳지 않을 수도 있습니다. Car와 Person에 동일한 Parent Entity를 부여하는 것은 적절하지 않을 수 있습니다. 따라서 Image 2 Relationship, Person, Car를 제공하고 그 중 하나만 설정할 수 있습니다. 어느 쪽이든 .. 당신은 2 개의 이미지 엔티티가 필요 없습니다. – hooleyhoop

관련 문제