2010-12-06 6 views
2

나는 categoryA -> subcategoryA -> book 관계와 같은 pojo가있는 경우에. subcategoryA는 학부모 categoryA의 하위 항목입니다. 책이 하위 카테고리 A의 하위 항목입니다.이 경우 의 하위 항목입니다. 다른 하위 카테고리 -B로 '책'을 이동해야하는 경우 모든 항목이 동일한 항목 그룹입니다.큰 테이블 부모 - 자식

subcategoryA와 categoryA를 삭제하고 categoryA -> subcategoryA -> book없이 다시 생성해야합니까? categoryb -> subcategoryb -> book, other-book, other-book3을 다시 작성 하시겠습니까?

+0

수업을 게시 할 수 있습니까? 모든 속성을 비정규 화하면 각 속성이 –

답변

1

'책이 하위 카테고리 A의 하위입니다.'하위 카테고리 A의 키를 도서의 키 경로에 추가하여 모델링 한 경우 책을 삭제/다시 만들어야하거나 원래 subcatagoryA와 동일한 키로 하위 카탈로그 B를 만들어야합니다. 했다. 이것은 하위 카탈로그 A의 하위 인 다른 모든 책에 영향을 미칩니다.

이것은 appengine docs : "엔티티가 데이터 저장소에서 생성되고 해당 부분이 변경 될 수없는 경우 전체 키가 할당됩니다."때문입니다.

내게는 두 가지 해결책이 매우 까다로워 보이며 디자인을 다시 생각해 보시기 바랍니다. 예를 들어, subcatagoryA의 키를 별도의 속성 안에 별도의 필드로 저장할 수 있습니다. 여기에는 데이터가 비정규 화되고 subcatagoryA의 데이터를 (부분적으로) 책 안에 직접 저장하여 부분적으로 해결할 수있는 단점도 있습니다.

[편집] 당신의 질문에 대한 응답으로

: 작은 엔티티 그룹의 단점은 당신이 트랜잭션을 사용할 수 없다는 것입니다. 이 문제가 문제가되는지 여부는 ... 도서 + (하위) 카테고리에 대한 거래가 필요한지 여부에 달려 있습니다. 비정규 화 된 데이터를 변경하려는 경우 더 큰 비정규 화 문제가 발생합니다. 이 같은 계획 :..

  • 저장 특성을 가진 개체로 각 카테고리 분류 KEY + 책 (들) (의 일부) 다른 속성을 저장
  • 카테고리 변경되면 모든 비정규 데이터를 업데이트 (해당 책을 찾기 위해 저장된 'foreign'키 사용)
  • cron 작업을 사용하여 백그라운드에서 일관성을 검사합니다 (즉, 이전 작업이 중간에 실패한 경우).
+0

입니다. 즉, 하나의 엔티티 그룹에는 하나의 엔티티 만 있습니다. 너무 많은 별도의 엔티티 그룹이 있다면 그 영향은 ...? – cometta