2015-02-04 4 views
0

mongodb 만 사용한 후에 SQL을 사용하기 시작했습니다. 따라서, 나는 SQL 세계로 몇 가지 관행을 매핑하는 데 어려움을 겪고있다. 주로 mongodb의 임베디드 문서가 SQL에 매핑되는 방법을 잘 모르겠습니다. 내가 차를 가지고 사람을 모델링하고 싶다면SQL 임베디드 문서에 해당하는 내용

예를 들어, MongoDB를에, 난 SQL 데이터베이스에서 비슷한 관계를 만들 것입니다 방법

{ 
    firstName: 'John', 
    lastName: 'Smith', 
    car: { 
     color: 'Red', 
     year: 2001, 
     ... 
    } 
} 

같이 문서의 컬렉션을 것 ? 나는 car_colorcar_year과 같은 네임 스페이스를 사용할 수 있다는 것을 알았지 만 문서 구조에서이 관계를 보여주는 것과 비교하면 개념적으로 비효율적 인 것처럼 보입니다.

+0

두 테이블 만 사용하면됩니다. Car 테이블의 두 번째 Car 테이블에서 Car의 고유 ID와 관련이있는 CarIndex 필드가있는 Person 테이블. –

답변

0

위 예제에 따라, 다음과 같이 두 개의 테이블 (관계) (예 : PersonCar)을 구분하여 표시합니다. 각 테이블에는 기본 키 (기본 키 (예 : 자동차 등록 번호 또는 자동 증가 정수와 같이 자연 스럽다)가있을 수도 있습니다.

이 두 요소를 연관하려면의 값으로 Car 테이블에 Car의 1 차 키의 값, 또는 (2) 외래 키 필드 Person (1) 외래 키 필드를 가질 수 중 기본 키 값은 Person입니다. 나는 1 인당 여러 대의 자동차를 소유 할 수 있기 때문에 (2)를 선호한다.

물론 이것은 단순화 된 것입니다. 사람들은 여러 대의 자동차를 소유 할 수도 있습니다. 한 대의 자동차는 여러 사람이 소유하고있을 수 있습니다. 이것은 대개 외래 키를 차 테이블과 사람 테이블에서 지우고 사람과 차를 관련시키는 외래 키 쌍을 저장 한 세 번째 테이블을 만드는 방식으로 모델링됩니다.

각주 : 대부분의 사람들은 SQL에서 MongoDB로 이동하고 있습니다. 행운을 빕니다!

+0

감사합니다. 그렇습니다. 많은 사람들이 반대 방향으로 가고 있습니다. 그러나 우리의 주요 쿼리는 매우 관계형으로 판명되고 있으며 우리는 한 번에 3 개 또는 4 개의 콜렉션을 쿼리 할 수 ​​있기를 원합니다 - mongodb는 우리를 위해 이것을하지 않을 것입니다 – jtmarmon

+0

"* 대부분의 사람들은 SQL에서 MongoDB *로 이동합니다"- 나는 과대 광고가 실제로 다시 냉각되고 있다고 생각한다. NoSQL이 실제로 그들을 대신하지 못한다고 언급하는 사람들이 점점 많아지고 있습니다. Postgres는 관계형 및 NoSQL 스토어 (json, key/value)의 좋은 조합으로 최근 많은 주목을 받았습니다. –

+0

@a_horse_with_no_name에 동의하는 경향이 있습니다. 유용한 기능을 갖춘 PostgreSQL + 네이티브 XML/JSON 컬럼 타입은 꽤 좋은 조합입니다. – langton