2011-04-23 6 views
2

어떻게 코어 데이터를 사용하여 변경 가능한 찾아보기 테이블을 모델링 할 수 있습니까?코어 데이터 찾아보기 테이블

"그림"이라는 테이블이 있습니다. 각 그림은 "빨강", "파랑"등과 같이 하나 또는 여러 개의 "색상"을 가질 수 있습니다. 따라서 "색상"테이블은 공유됩니다.

어떻게 모델링 할 수 있습니까?

색상을 추가하거나 삭제하여 "색상"테이블을 수정할 수도 있습니다.

+0

도움이 될지 모르지만 아직 아직 게시되지 않은 게시물을 찾았습니다 ... http://stackoverflow.com/questions/1903177/coredata-many-to-many-relationships-and-nspredicate – Christopher

+0

좋아, 단순히 반비례 관계를 사용하여 다 대다 관계를 만들어야합니다. 그렇게 간단합니까? – Christopher

+0

10 개가 넘는 질문이 있으며 누구도 수락하지 않았습니다. –

답변

2

당신이에서 색상이 색상을 사용 에 모든 그림 오브젝트를 을 통과 할 수있게하려면, 당신이 원하는 것 :

+0

감사합니다. "조회 테이블"측면에 대해 궁금합니다. 그림을 만들기 전에 몇 가지 색상 항목을 추가하여 사용자에게 이러한 옵션을 제공 할 수 있습니다. 페인팅 # 1이 녹색으로 사용되면 페인팅 # 2가 생성 될 때 기존 색상 값을 "조회하여"표시하고 싶습니다. 나는 별도의 테이블이나 "plist"또는 뭔가가 필요할 수도 있다고 생각합니다. – Christopher

+0

사용 가능한 색상에 대한 조회 데이터가있는 세 번째 테이블을 만든 다음 색상 테이블에서 ID 값을 참조 할 계획입니다. 페인팅을 위해 색상을로드하는 중에 조회 실패가 발생하는 경우이 색상이 삭제되었음을 알 수 있습니다. 이것을 처리하는 좀 더 우아한 방법이있을 것입니다. 앞으로 더 나은 방법을 찾아 내고 싶습니다. – Christopher

+0

조회 테이블의 측면은 매우 간단해야합니다.기본적으로 특정 개체 (예 : 색상)의 모든 개체가 표시됩니다. – westsider

1

예, 다 대 다 관계가이를 모델링하는 올바른 방법입니다.

Painting{ 
    name:string 
    colors<<-->>Color.paintings 
} 

Color{ 
    name:string 
    paintins<<-->>Painting.color 
} 
+0

그러나 한 가지 문제는 편집 할 수있는 (추가/제거) 그림에 대해 선택할 수있는 "사용 가능한"색상을 포함하는 표를 갖고 싶다는 것입니다. 그리하여 각 그림마다 색상 표가 있습니다. 그러면 세 번째 테이블이 필요할 것입니까? 모든 테이블을 동기화 상태로 유지하려면 어떻게합니까? 나는이 질문들에 대한 해답이 나를 위해이 문제를 해결할 것이라고 생각한다. – Christopher

1

는이 같은 데이터 모델 뭔가가 필요 to-many 페인팅 >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> 이것은 당신이 찾고있는 것으로 보입니다.

반면에 색에서 그림으로 넘어갈 필요가없는 경우 이것은 역 관계를 피하고 단순히 그림을 그리는 데 드문 경우 중 하나 일 수 있습니다. -> > 색상.

편집

당신이 회화에 의해 참조입니다 색상을 삭제할 수 있도록하려면는, 당신은 아마이 두 개체 사이의 반비례 관계를 유지하려는. 또한 색상 - >> 페인팅 및 페인팅 - >> 색상 관계에서 '삭제 규칙'을 정의해야합니다. 두 경우 모두 "무효화"가 최선의 선택입니다. 따라서 색상이 삭제되면이를 참조하는 모든 그림은 해당 참조가 무효화 (제거)됩니다. 마찬가지로 그림을 삭제하면 해당 그림을 참조한 모든 색상이 그림을 참조하지 않게됩니다.

즉, 조회 실패를 확인할 필요가 없습니다. 즉, 방어 적으로 코드를 작성하는 것이 항상 좋은 습관입니다.