2011-11-14 4 views

답변

26

MongoDB를 뒤에 아이디어는 관계형 데이터를 제거 (또는 적어도 최소화)하는 것입니다. 출석 데이터를 각 학생 기록에 직접 삽입하는 것을 고려 했습니까? 이것은 실제로 MongoDB의 기본 디자인 패턴이며 성능과 확장 성이 훨씬 향상 될 수 있습니다.

관계형 데이터와 정규화 된 데이터가 정말로 필요하면 MongoDB를 사용하여 다시 생각해보십시오.

+0

답장을 보내 주셔서 감사합니다. 강사가 MongoDb와 함께이 프로젝트를 나에게주었습니다. 그래서 나는 어딘가/someones (당신 같은 사람 :)에서 몇 가지 정보를 검색하고 그것을하려고 할 것입니다. 다시 감사합니다. –

+2

MongoDB를 처음 접한다면, 웹 사이트 : http://www.mongodb.org/ ("Try it"을 클릭하고 셸에서'tutorial'을 입력하십시오)에 아주 멋진 튜토리얼이 있습니다. –

+1

@MikeChristensen 현재이 조언은 더 이상 유효하지 않습니다. 그들은 아마 그들의 웹 사이트를 바 꾸었습니다. – Kunok

17

답변은 데이터 사용 방법에 따라 다릅니다. 당신은 정말로 2 가지 옵션이 있습니다. 출석 테이블을 임베드하거나 링크하십시오. 이러한 접근 방식에 대한 자세한 내용은 여기에서 자세히 설명합니다. http://www.mongodb.org/display/DOCS/Schema+Design

일반적인 경우에는이 특정 컬렉션을 포함하므로 각 학생 레코드에 "출석"표가 포함됩니다. 이는 출석 기록이 학생간에 공유되지 않을 것이므로 출석 데이터를 검색하면 학생 정보도 필요하기 때문에 효과적입니다. 출석 데이터를 가져 오는 것은 다음과 같이 간단합니다 :

db.student.find({ login : "sean" }) 
{ 
    login : "sean", 
    first : "Sean", 
    last : "Hodges", 
    attendance : [ 
    { class : "Maths", when : Date("2011-09-19T04:00:10.112Z") }, 
    { class : "Science", when : Date("2011-09-20T14:36:06.958Z") } 
    ] 
} 
+0

감사합니다. 저는 Schema Design을 읽기 시작했습니다. –

0

예. 어렵고 빠른 규칙이 없습니다. 데이터를 포함하거나 참조하는 장단점을 살펴 봐야합니다. 이 비디오는 확실히 도움이 될 것입니다 (https://www.youtube.com/watch?v=-o_VGpJP-Q0&t=21s). 예를 들어, 전화 번호 속성은 거의 변경되지 않으므로 동일한 테이블 (문서 데이터베이스에 있음)에 있어야합니다.

관련 문제