使用多个整数值存储属性

时间:2018-04-16 10:34:25

标签: mysql ruby-on-rails database activerecord

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

attribute_1, attribute_2, ..., attribute_8

当方法需要引用这些模型时,这会产生一个相当混乱的模型,以及一个笨重的数据库表和模式。

这些是分配的默认值(但在表单上可以覆盖),并代表用户的唯一标识符。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

更好地将两个表中的Brew和Attribute分开,并将它们链接起来,如下所示:

enter image description here

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

存储JSON没问题,就像@max指出的那样。我只是提出了规范化的数据库方式。