在数据库中存储序列化数组是一种反模式? Rails

Storing a serialized array in the database an anti pattern? Rails

this other question 中所述,您可以将序列化数据存储在数据库中。我想知道的是我是否真的应该或只是创建一个简单的额外 table.

对象有一个关联号码列表。

可能需要检查对象是否具有特定编号。

永远不会更新它。

不会查询。

有 属性 个数字作为序列化?

有 table 个属于对象的数字?

顺便说一句,我正在使用 rails 5.1 和 postgresql。

谢谢

由于您使用的是 PostgreSQL,实际上您还有第三种选择:使用数组列。

创建列时添加array: true选项:

t.integer :column_name, array: true

然后 model.column_name 将是一个 Ruby 数组,您可以使用所有 PostgreSQL array operators and functions 来处理和查询数组。

我倾向于认为您通常最好使用单独的 table,但数组列通常很方便,并且在必要时很容易展开到单独的 table 中。

我会远离 serialize。这会将一团 YAML 扔到您的数据库中,而且 YAML 查询起来既困难又麻烦,更不用说在数据库内部进行操作了。