繁体   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