2010-12-04 5 views
0

"Person"테이블과 다분히 관계가있는 "Group"테이블과 다분히 관계가있는 "Event"라는 테이블이 있다고 가정 해 봅시다.다른 테이블과의 관계 외부에서 편집 할 수있는 CoreData 테이블을 어떻게 유지 관리 할 수 ​​있습니까?

같은 사람을 참조 할 수있는 많은 그룹을 만들 수 있습니다.

"Person"을 "Group"으로 역관계를 추가하지 않았습니다. "Group"이 삭제되면 관련 "Person"이 삭제되어 다른 사람이 참조 할 수 있기를 원하지 않기 때문입니다.

역관계를 생략해야합니까? 워드 프로세서는이 문제에 강력하게 조언하지만이 방법이 올바른 방법 일 것이라고 생각합니다.

도움을 주시면 감사하겠습니다.

+0

또한 그룹 삭제 규칙을 "조치 없음"으로 설정해야합니까? 이렇게하면 그룹이 삭제 될 때 "Person"테이블이 변경되지 않습니다. – Christopher

+0

나는 지금 그걸 가지고 있을지도 모른다고 생각한다. 그룹은 Person과 많은 관계가있다. 사람은 그룹과 역 다차원 관계입니다. 이제 삭제 규칙을 결정해야합니다. 저는 Group-Person을 "No Action"으로, Person-Group을 "Deny"로합니다. 나는 Group-Person이 "Nullify"이어야하고 CoreData가 다른 그룹이 참조하는 경우 "Player"만 남겨 둘만큼 똑똑하다고 생각할 수 있습니까? 나는 이것이 내가 묻는 핵심 질문이라고 생각한다 .-) 감사합니다 ... – Christopher

+1

크리스토퍼, 당신은 보통 "Nullify"의 기본값을 원합니다. "No Action"은 코드에서 사용자 지정 동작을 구현할 때 사용됩니다. –

답변

2

달리해야 할 특별한 이유가없는 한, 은 항상이 역 관계에 있어야합니다. CoreData가 객체 그래프의 무결성을 유지하는 데 도움이됩니다. 관계에 대한 기본 삭제 규칙은 "Nullify"이며 원하는대로 들릴 수 있습니다. "Nullify"는이 개체를 삭제하면이 관계의 반대쪽에있는 관계 특성이 (일 대 일 관계의 경우) nill-out되거나 (대다 관계의 경우) 집합에서 제거 된 값을 갖게됨을 의미합니다. 관계의 다른 끝이 실제로 h 제되는 유일한 f}은 h 제 규 "을 변경하여이를 지 정하는 경우입니다.

tl; dr : 반비례 관계를 사용하여 삭제 규칙을 기본값 "Nullify"로 그대로 둡니다.