itsource

MongoDB에서 다대다 관계를 구성하는 방법

mycopycode 2023. 5. 27. 11:08
반응형

MongoDB에서 다대다 관계를 구성하는 방법

사용자와 그룹이라는 두 개의 테이블/수집이 있습니다.사용자는 그룹의 구성원이 될 수 있으며 그룹의 소유자도 될 수 있습니다.관계형 데이터베이스에는 사용자가 있는 사용자 그룹이라는 세 번째 테이블이 있을 것입니다.ID 열, 그룹ID 열과 IsOwner 열이 있습니다.

저는 MongoDB를 사용하고 있으며 문서 데이터베이스에서 이러한 관계에 대한 다른 접근 방식이 있을 것이라고 확신합니다.소유자로서의 그룹 및 그룹 목록을 사용자 테이블 내에 개체의 두 배열로 포함해야 합니까?ID? 또한 그룹 테이블에 구성원 및 소유자 목록을 두 개의 배열로 저장하여 관계를 효과적으로 미러링하여 관계 정보가 중복되도록 해야 합니까?

또는 사용자 그룹 테이블을 브리지하는 것이 문서 데이터베이스에서 많은 관계에서 합법적인 개념입니까?

감사해요.

제가 지금까지 수행한 작업과 현재 사용하는 작업은 각 문서에 노드 ID가 포함된 내장형 어레이입니다.

따라서 문서 user1에 속성 그룹 [id1,id2]이 있습니다.

문서 그룹1에는 속성 사용자 [user1]가 있습니다.문서 그룹 2에는 속성 사용자 [user1]도 있습니다.

이렇게 하면 그룹 개체를 가져오고 관련된 모든 사용자를 쉽게 선택할 수 있으며, 사용자도 마찬가지입니다.

개체를 만들고 업데이트할 때는 작업이 조금 더 필요합니다.두 개체가 관련되어 있다고 하면 두 개체를 모두 업데이트해야 합니다.

또한 MongoDB에는 DB 참조 개념이 있으며 드라이버에 따라 문서를 검색할 때 참조된 개체를 자동으로 끌어옵니다.

http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef

혹시 관심 있는 사람이 있을까봐 mongoDB 블로그에 올라온 아주 좋은 기사를 우연히 만났어요. mongoDB Schema Design을 위한 경험의 법칙 6.이 글에는 세 부분이 있는데, 세 부분을 다 읽고 나면 이해가 잘 될 것입니다.

예를 들어 다대다 관계를 이해해 보겠습니다.

  • 저자가 읽을 수 있는 책.
  • 학생부터 교사까지

저자와의 책은 몇 에서 몇 개의 관계이기 때문에, 우리는 다른 사람의 문서 안에 책이나 저자들의 배열을 가질 수 있습니다.학생부터 교사까지 마찬가지입니다.또한 중복의 위험을 감수하고 임베딩할 수도 있습니다.그러나 이것은 각 학생이 삽입하기 전에 시스템에 선생님이 있어야 하며 그 반대도 마찬가지입니다.응용프로그램 로직에서 항상 허용하지 않을 수 있습니다.즉, 하위 개체가 존재하려면 상위 개체가 존재해야 합니다.

하지만 많은 관계를 맺을 때는 두 개의 컬렉션을 사용하여 진정한 연결을 맺으십시오.

언급URL : https://stackoverflow.com/questions/4839881/how-to-organise-a-many-to-many-relationship-in-mongodb

반응형