2016-04-26 58 views
0

我對如何在Django中解決多租戶問題存在疑問,並解決了以下問題。我正在製作發票應用程序,每個用戶都獨立地添加到產品/客戶(等等)模型中,然後使用它們創建發票和庫存。針對基於saas的發票應用程序的Django多租戶的數據庫模式問題

現在,在這種情況下,請注意以下使用案例:

USER A 
     Product (Unique on: Key) 
     Key Name  Price Discount Tax Total 
     Pan Panasonic xxxxx xxxxx xxxxx xxxxx 
     Sam Samsung  xxxxx xxxxx xxxxx xxxxx 
     Tes Tesla  xxxxx xxxxx xxxxx xxxxx 
     App Apple  xxxxx xxxxx xxxxx xxxxx 

     Cusomer (Unique on: Key) 
     Key Name Address VAT No Pending Amount 
      c1 Cust1 abcd 1234 xxxxx 
      c2 Cust2 xyz  0000 xxxxx 
      c3 Cust3 pqr  1111 xxxxx 

USER B 
     Product (Unique on: Key) 
     Key Name  Price Discount Tax Total 
     Pan Panteen xxxxx xxxxx xxxxx xxxxx 
     Sam Samsung  pppp xxxxx ccccc dddd 
     Tes Tesla  xxxxx xxxxx xxxxx xxxxx 
     App Apple  xxxxx aaaa xxxxx bbbb 

     Cusomer (Unique on: Key) 
     Key Name Address VAT No Pending Amount 
      a1 Cust1 abcd 1234 xxxxx 
      a2 Cust2 xyz  0000 xxxxx 
      a3 Cust3 pqr  1111 xxxxx 

每個用戶創建獨立這些表的行。例如,每個用戶可以使用相同的產品密鑰來命名不同的產品,他們也可以具有不同的價格/折扣的相同產品等。與客戶相同。

並且用戶不應該訪問表中的任何部分,期望他們創建的部分(以便用戶A不會錯誤地觸摸用戶B的數據)。

現在,什麼應該是我的db計劃&我該如何繼續?

此外,我有一個產品slu and和一個客戶slu field領域,它slu the獨特的領域(即關鍵),讓用戶訪問他們各自的產品/客戶頁面(他們可以在此查看和編輯產品/客戶數據) 。

我打算在部署階段使用postgresql。

回答

0

將一個用戶外鍵放在所有數據只屬於該用戶的表上。然後只需在該表上查詢和過濾User,並有權限查找User外鍵等等。

+0

嗯,我考慮過了,但是這不是反縮放的(假設有10k用戶,每個用戶有1k個產品,所以搜索會通過10k * 1k)?而且產品上的slu field領域將如何工作? – Sayantan

+0

爲了增加它,我儘管使用模式,但是,如果我沒有錯,Django本身不支持模式,對吧?在那種情況下,我該如何整合它(我在Django中看到了這張票,但它不是一個非常動態的解決方案) – Sayantan