2014-11-14 2 views
0

Dropbox 데이터 저장소를 사용할 때 일대 다 테이블 관계를 처리하는 가장 좋은 방법이 궁금합니다. 내가 house 테이블을 가지고 있고 각 하우스가 people을 가질 수 있다고 가정 해 봅시다.Dropbox Datastore API에서 테이블 관계를 모방하는 방법

[house] 
- kitchen 
- roof 
- people (many) 

그리고 사람들은 자신의 특성을 가지고 사람들을 직렬화하고 DBList에서 그들을 포함 :

[people] 
- name 
- gender 

나는 두 가지 방법을 생각할 수 있습니다


접근 1

[house] 
- kitchen: traditional 
- roof: tile 
- people: [Bob-male, Sally-female] 

이렇게하면 데이터 저장소에서 데이터를 가져올 때마다 데이터를 구문 분석해야합니다.


접근 방법 2 : 집에 질의 한 후 house

[house] 
- kitchen: traditional 
- roof: tile 
- people: [a3xy, t7e1] 

[people] 
- recordId: a3xy 
- name:Bob 
- gender:male 
----- 
- recordId: t7e1 
- name: Sally 
- gender:female 

에서 자신의 기록 ID를 추적하는 people 테이블을 확인,이 데이터를 얻기 위해 사람들과 기록 ID를 추가 쿼리를 수행해야합니다 .


Dropbox Datastore API에서 테이블 관계를 유지하는 유일한 방법은 있습니까?

답변

2

이들은 관계를 모델링하는 두 가지 일반적인 방법입니다. 특히, 그것은 1 : 많은 관계처럼 보입니다. 또한 1 : 1 관계 (레코드의 다른 데이터를 포함하는 것이 일반적 임), 많은 : 1 개의 관계 (1 : 많은 관계의 역순입니다) 및 많은 : 많은 관계가 일반적으로 "접합 테이블"(예 : HouseToPerson).

첫 번째 접근 방식은 NoSQL 데이터베이스에서 더 일반적인 방식 인 것처럼 보이지만, 두 번째 접근 방식은 관계형 데이터베이스에서 일반적으로 사용되는 일반적인 정규화 된 데이터베이스 스키마처럼 보입니다.

이러한 패턴은 모두 데이터 저장소에 적용 할 수 있습니다. Datastore API에서 모든 "쿼리"는 로컬 조회이므로 "추가 쿼리 수행"은 중요하지 않습니다.

+0

도움 주셔서 감사합니다. –

+0

DataStore API에서 DBList 필드 구문을 보내 주시겠습니까? DBList에 항목을 추가하고 DBList를 DbTable의 필드로 삽입하십시오. – Babul

관련 문제