我目前正在製作一個銷售訂閱作爲多租戶應用程序的web應用程序。我使用的技術是導軌。多租戶與租戶共享數據
但是,它不會是孤立的租戶使用當前的應用程序。
每個租戶都會創建產品並將其發佈到應用的個人實例中。每個租戶都有自己的用戶羣。
有問題的規範是租戶可能會將其產品分享給其他租戶,以便他們可以轉售。
說明:
FruitShop銷售蘋果橘子和西紅柿。
VegetableShop出售蘿蔔和胡椒鍾。Fruitshop將西紅柿分享給其他商店。
VegetableShop決定從共享 項目的可用列表中獲取西紅柿,並將其添加到其庫存。
現在顧客瀏覽蔬菜商店會看到蘿蔔,胡椒鈴和番茄。
正如你所猜,
select products where tenant_id='vegetableshop_ID'
將無法正常工作。
我想這樣做是一個多對多的關係以某種tenant_to_product
表中,將有tenant_id
,product_id
,price_id
甚至發佈開始,結束日期。並且產品將是tenant_creator_id替換tenant_id以便知道誰是原始所有者的「半租賃表」。
對我來說,看起來很繁瑣,增加它將意味着複雜的查詢,即使是隻出售他們自己的產品的商店。獲取銷售的產品將是複雜的:
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引用原產品。
我不確定這會是一個好主意,像這樣實現這個約束,你建議我做什麼?我打算做些什麼愚蠢的事情,還是一個不錯的主意?