2011-01-03 8 views
2

MongoDB에 대한 스키마와 관련된 질문이 생겼습니다. MongoDB Schema Design의 예제를 참조하면 db.students 및 db.courses와 관련됩니다.MongoDB 스키마 디자인 - 새로운 컬렉션 또는 참조?

SQL 구조화에 익숙해 져서이 참조 또는 포함 문제와 혼동 스럽습니다. 따라서이 예는 db.students 내의 코스를 보여 주며 db.courses을 참조합니다. 그렇다면 humanities, languages 등과 같은 강의를 분류하려면 어떻게해야합니까?

더 좋은 방법은 무엇입니까?

    1. db.categories라는 콜렉션을 생성하고 db.courses를 참조하십시오. 단지에
// db.courses 
{ name: Biology, cat: 1 } 
{ name: English, cat: 2 } 

// db.categories 
{ cat: 1, name: Humanities } 
{ cat: 2, name: Languages } 
    2. 교육 과정 내에 포함?
// db.courses 
{ name: Biology, cat: Humanities } 
{ name: English, cat: Languages } 
{ name: History, cat: Humanities } 

사람이 친절하게 조언을 주 시겠어요, 내가 무슨 일을해야 하는가?

감사합니다.

답변

3

소개 : 당신의 경우

카테고리 그냥, 그냥 몇 가지 열거를 생성하고 ID로 카테고리 이름을 얻을 필요 당신이 과정을 표시하기 위해 부하 범주를 필요가 없습니다 열거 형 (Enumeration) 때문에 모두 변형이 좋은 것 .

예를 들어 db.users 테이블이 있고 각 사용자가 db.courses 콜렉션을 가지고 있으면 별도의 문서를 만들 필요가 없습니다. 그냥 중첩 된 콜렉션 코스 만 있으면됩니다. 그리고 그것은 정말 멋지다. 왜냐하면 SQL에서는 하나 또는 여러 개의 참조로 별도의 테이블을 생성해야하기 때문이다.

문서 데이터베이스의 큰 이점 중 하나는 중첩 된 컬렉션이 있고 큰 테이블을 조인 할 필요가 없다는 것입니다.

답변 :

그래서 귀하의 경우에는 내가 두 가지 제안 :

  1. 하는 ID로 카테고리 이름을 범주에 대한리스트를 작성하고 수를 (그러나 몽고에서로드 할 수 없습니다).
  2. 카테고리 이름을 코스에 복사하십시오 (카테고리 이름이 변경된 경우 각 코스를 새 카테고리 이름으로 업데이트해야하기 때문에 첫 번째 경우가 더 낫습니다).
관련 문제