【问题标题】:Storing attributes with multiple integer values存储具有多个整数值的属性
【发布时间】:2018-04-16 10:34:25
【问题描述】:

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

attribute_1, attribute_2, ..., attribute_8

当方法需要引用这些模型以及笨重的数据库表和架构时,这会导致模型相当混乱。

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

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

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

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

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

【问题讨论】:

标签: mysql ruby-on-rails database activerecord


【解决方案1】:

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

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

另一个好处,是你可以很容易地添加属性。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2015-01-18
    • 1970-01-01
    相关资源
    最近更新 更多