布尔属性或新表(Django + PostgreSQL)

问题描述 投票:0回答:1

情况:我有一套书。书籍可以是以下类型之一:“测试”,“高级”和“普通”。数据比例: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组合:books_test表和书籍表,其中包含'is_premium'属性。

我们需要以最佳方式查询这些数据!所有三种书籍变体都需要在一个页面中。存在的查询集组合:仅测试,仅常见,常见+溢价,仅限溢价。

  • 如果我们使用1,3变体:1端点具有特定过滤器;
  • 如果我们使用2个变体:一个没有过滤器的树端点(前端应该知道端点使用什么类型)。或者我们可以创建一个具有某些条件的端点,并通过后端进行检查。无论如何:需要扩展逻辑;

哪种方式更正确,为什么?

django database postgresql
1个回答
0
投票

如果你需要在一个页面上混合使用不同的类型,单独的模型/表格会使事情变得复杂,没有充分的理由。将两个以上的独占状态映射到布尔字段的组合也是如此。

这将为您提供一个选择字段或包含选项的单独BookType模型。

© www.soinside.com 2019 - 2024. All rights reserved.