簡體   English   中英

布爾屬性或新表(Django + PostgreSQL)

[英]Boolean attribute or new table (Django + PostgreSQL)

情況:我有一套書。 圖書可以是以下類型之一:“測試”,“高級”和“普通”。 數據比例:2%,15%,83%。 每個時間單位的查詢量(百分比):40%,20%,40%

我看到一些解決數據庫中問題的方法:

  1. 布爾值:is_test,is_premium。 如果只需要“測試”書: Book.objects.filter(is_test=True) 例如,它可以是代理模型。 類比高級書籍;
  2. 單獨的表格:books_test,books_premium,books_common。
  3. 選擇字段: ['Test', 'Premium', 'Common']字符串;
  4. 結合1和2:具有'is_premium'屬性的books_test表和books表。

我們需要以最佳方式查詢此數據! 所有這三種Book變體都需要一頁。 現有查詢集組合:僅測試,僅通用,通用+高級,僅高級。

  • 如果我們使用1,3個變體:1個具有特定過濾器的端點;
  • 如果我們使用2個變體:沒有過濾器的樹端點之一(前端應該知道使用哪種端點)。 或者,我們可以創建一個具有某些條件的端點並通過后端進行檢查。 無論如何:需要擴展邏輯;

哪種方法更正確,為什么?

如果您需要在一頁上混合使用不同的類型,則沒有充分的理由將單獨的模型/表復雜化。 將兩個以上的互斥狀態映射到布爾字段的組合也是如此。

這樣就為您提供了一個選擇字段或一個包含選擇的單獨BookType模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM