用postgres在一行中处理多个布尔项目?
Posted
技术标签:
【中文标题】用postgres在一行中处理多个布尔项目?【英文标题】:Handle multiple boolean items in a single row with postgres? 【发布时间】:2021-11-29 08:51:54 【问题描述】:我有一个超过 12 列的表,其中只有布尔项!如何用单列管理?
作为要求的一部分,这需要是动态的(从某种意义上说,列将来可能会增加)所以它应该在不改变表的情况下运行!
实现这一目标的最佳方法是什么?
Table Users:
married: False
profession_provided: False
location_provided: True
certificates_provided: False
exams_provided: True
像上面一样,我有超过 12 列,并且在不久的将来这可能会增加 - 那么有什么方法可以处理这个 - 例如使用 Json 或数组或按位等
我读过一些文章说按位可以这样存储:
0010101
所以如果它为 0 则为假,否则为真!这是值得信赖的还是有任何有效的方法来处理这个问题?
【问题讨论】:
“最佳方式”很大程度上取决于您对“好”的定义。速度?简单?贮存? ... 【参考方案1】:以下是一些节省空间的解决方案:
Is there any difference between integer and bit(n) data types for a bitmask?boolean
(bool[]
) 的数组将是另一个仍然相对节省空间的选项。
如果不关心存储,您可以只添加一个文档类型列(json
, jsonb
或 hstore
),以允许动态(无模式)增长,并更明确地存储键和值。
【讨论】:
以上是关于用postgres在一行中处理多个布尔项目?的主要内容,如果未能解决你的问题,请参考以下文章
使用 ruby on rails 将布尔值保存到 postgres 数据库
如何让我在 Heroku 上的 Laravel 项目使用 Heroku Postgres?