현재 멀티 테넌트 앱으로 구독을 판매하는 webapp을 만드는 중입니다. 내가 쓰고있는 기술은 난간이다.임차인 데이터 공유를 통한 다중 임대
그러나 현재 앱을 사용하여 고립 된 세입자가되지는 않습니다.
각 세입자는 제품을 만들어 앱의 개인 인스턴스에 게시합니다. 각 세입자는 자신의 사용자 기반을 가지고 있습니다.
문제가되는 사양은 거주자가 다른 제품을 공유 할 수 있으므로 재판매 할 수 있다는 것입니다.
설명 :
FruitShop 사과 오렌지와 토마토를 판매하고있다.
VegetableShop는 무와 후추 종을 판매합니다.토마토는 다른 상점과 공유합니다.
VegetableShop 공유 된 품목 목록에서 토마토를 가져 와서 인벤토리에 추가하기로 결정하십시오.
야채를 탐색하는 고객은 무, 후추 종 및 토마토를 볼 수 있습니다.
짐작할 수 있듯이
select products where tenant_id='vegetableshop_ID'
은 작동하지 않습니다.
내가 tenant_id
, product_id
, price_id
을 가지고도 시작 - 종료 날짜를 게시 할 tenant_to_product
테이블의 일종으로 많은 관계에 많은 일을 생각했다. 제품은 테넌트 ID가 누가 원래 소유자인지 알기 위해 tenant_creator_id로 대체되는 "절반 테넌트 테이블"입니다.
제게 그것은 자신의 produts만을 판매하는 상점의 경우에도 복잡한 쿼리를 의미하는 것은 부담 스럽습니다. 판매 된 제품을 얻는 것은 복잡 할 것 :
select tenant_to_products.*
where tenant_to_products.tenant_ID='current tenant'
AND (tenant_to_products.product match publication constraints)
for each tenant_to_product do
# it will trigger a lot of DB call
Display tenant_to_product.product with tenant_to_product.price
취소 공유 제품 것은 또한 원래 제품을 참조하는 모든 tenant_to_products을 수정 복잡한 업데이 트를 의미 할 것입니다.
이 제약 조건을 구현하는 것이 좋은지 잘 모르겠지만 무엇을 제안합니까? 나는 어리석은 짓을하려고 계획하고 있는가? 아니면 그렇게 나쁜 생각이 아닌가?