2017-11-17 10 views
0

firebase 실시간 스키마에 두 세트의 엔티티가 있습니다. 주문서 및 고객에게 전화했습니다.firebase 실시간 스키마 디자인

지금까지 나는 실제로 내 앱에서 관련이 없었지만 관련성을 보여주고있었습니다. 현재 스키마 보였다처럼 : 나는

/orders.json 발사 얻을 테이블의 모든 주문을 표시하는 주문 목록 페이지가 그러나 그래서

{ 
"orders" : [ 
      {"id" : 1, "name": "abc", "price": 200, "customer": "vik"} 
      ], 
"customers" : [ 
       {"cust_id" : "10", "name" : "vik", "type": "existing"} 
       ] 
} 

실질적으로 대신 직접 고객 이름을 갖는 명령은 내가 cust_id 속성을 가지고 있어야하므로 키입니다.

당연히 주문의 불일치에 대한 걱정없이 고객 속성을 자유롭게 변경할 수있는 표준 관계형 스키마가됩니다.

그러나 단점은 내가 주문 목록 테이블에 표시 할 주문 20 개를 말하면 1 대신 21 개의 전화를 겁니다 (주문 목록을 얻으려면 1 개를, 고객을 가져 오려면 20 개) 각 주문의 이름)

이 문제에 관한 권장 사항이나 표준은 무엇입니까?

답변

1

Firebase은 NoSQL 데이터베이스입니다. 따라서 관계형 데이터베이스에서 알 수있는 정규화 규칙이 반드시 적용되는 것은 아닙니다.

예 : 각 주문에 고객 이름을 사용하는 것은 실제로 매우 일반적입니다. 각 고객 레코드에 대해 클라이언트 측 조인을 수행하지 않아도되므로 코드가 크게 단순화되고 작업 속도가 향상됩니다. 물론 NoSQL 데이터베이스에서는 데이터를 여러 번 저장해야하는 번거 로움과 고객 레코드 업데이트시 복제 된 데이터를 업데이트하는 방법/고려 방법을 고려해야합니다.

나는 Firebase for SQL developers을보고 keeping denormalized data up to date에서 내 대답을 읽는 것이 좋습니다. NoSQL data modeling을 읽는 것이 좋습니다.