Mysql 存储具有多个整数值的属性

Mysql 存储具有多个整数值的属性,mysql,ruby-on-rails,database,activerecord,Mysql,Ruby On Rails,Database,Activerecord,我需要存储动态数量的整数属性(1-8)。我将它们存储在数据库表中的各个列中,如: attribute_1, attribute_2, ..., attribute_8 当方法需要引用这些模型时,这会造成相当混乱的模型,以及笨拙的数据库表和模式 这些是指定的默认值(但可在表单上重写),并表示用户的唯一标识符 例如,在发酵罐中混合前,一种啤酒最多由八批组成。酿酒商可能希望返回并通过其唯一的识别号引用其中任何一个。我根据创建新Brew时的最后一个最高值分配这些唯一值。但是,用户可能希望将这些默认值替

我需要存储动态数量的整数属性(1-8)。我将它们存储在数据库表中的各个列中,如:

attribute_1, attribute_2, ..., attribute_8
当方法需要引用这些模型时,这会造成相当混乱的模型,以及笨拙的数据库表和模式

这些是指定的默认值(但可在表单上重写),并表示用户的唯一标识符

例如,在发酵罐中混合前,一种啤酒最多由八批组成。酿酒商可能希望返回并通过其唯一的识别号引用其中任何一个。我根据创建新Brew时的最后一个最高值分配这些唯一值。但是,用户可能希望将这些默认值替换为其他一些数字

在大多数情况下(小型啤酒厂),他们可能只会使用前两种,但一些大型啤酒厂会使用全部八种

必须有一种更好的方法来存储这些属性,而不是用八个不同的属性来存储相同的名称和末尾的数字


我正在使用MySQL。是否有一种简单/简洁的方法来存储数组或JSON哈希,但仍然能够在表单上编辑这些值?

我不会这样存储属性。这将限制你在未来的发展。假设您想知道哪些啤酒使用了属性_4?您必须扫描整个brews表,打开attributes字段并解构它,以查看其中是否有4个

最好在两个表中分离Brew和属性,并将它们链接起来,如下所示:

另一个好处是,您可以轻松添加属性


存储JSON是可以的,就像@max指出的那样。我只是建议使用规范化的数据库方法。

从MySQL 5.7.8开始,MySQL支持。ActiveRecord还可以“序列化”列,将数据转换为YAML或JSON,并将其存储为字符串。但我会考虑,如果你不应该使用两个单独的表,并建立两者之间的关联。