2012-04-23 13 views
1

나는 두 기관이 있습니다CouchDB를 데이터베이스 모델

  1. 회사 [회사 ID (PK)] 및
  2. 직원 [employeeId를 (PK), 회사 ID (PK, FK)].

나는 다음과 같은 형식 ($ CouchDB를 내 CouchDB를 인스턴스에 URL이)를 사용하여 직원을 조회 할 수 있도록 내가 CouchDB를 내 문서를 구성 할 수 있습니다 어쨌든 있나요? 우리가 원하는 문서를 조회 할 수 감소/("_type"예컨대) 및지도

$CouchDB/company/{companyId}/employee/{employeeId} 

나는 우리가 하나의 데이터베이스에서 두 회사와 직원의 문서를 혼합하고 메타 필드를 사용할 수 있다는 것을 알고있다. "지도/축소"접근 방식에는 아무런 문제가 없으며 두 번 확인하여 아무 것도 놓치지 않도록하고 싶습니다. 당신은 하지 그런 식으로 문서를 구성 할 수 있습니다

답변

1

많은 감사합니다. 나는 매우 멋진 레이아웃이지만 짧은 대답은 CouchDB가 지원하지 않는다는 것에 동의한다.

문서 ID (및 문서 URL)는 플랫입니다. 그들은 모두 같은 네임 스페이스를 공유합니다. 또 다른 방법은 문서 "_id" 값이이 기본 키가되어야한다는 것입니다.

0

with some quirks이지만, _id 문서는 /을 포함 할 수 있습니다. 그런 다음 company/COMPANYID/employee/EMPLOYEEID은 유효한 ID입니다.

나는 종종 (내가 _를 선호) 문서의 _id를 구축하기 위해 다음과 같은 기법을 사용

EntityName_ENTITYID 

을이 _id으로 :

  • 내가 _type 필드를 필요로하지 않는다;
  • 나는 모든 회사의 _all_docs?startkey="Company_"&endkey="Company_\fff0"를 얻습니다.
  • 나는 회사 내의 모든 직원을 _all_docs?startkey="Employee_COMPANYID_"&endkey="Employee_COMPANYID_\fff0"으로 얻습니다.
  • 다른 엔티티 간의 ID 충돌을 피합니다.