具有许多列的ActiveRecord表:有更好的方法吗?

问题描述 投票:2回答:1

我想知道我是否正在使用表属性来描述对象,或者对于某些类型的属性是否有更有效和可行的方法。

我有两个ActiveRecord表,foodslists。两个表都有很多列,因为每个对象都有许多属性(卡路里,脂肪,蛋白质等)。

除了这些内在特性之外,我发现自己在表中添加了表示对象在组或用户定义属性中的成员资格的属性。

集团成员数据表明​​食品是甜点还是肉类,以及其他类别。为此,我有二进制或分类(char)数据的列。

用户定义的属性数据包括列表的“最大卡路里”或“最大脂肪”属性。如果我有一个对应于每个“总数”的“最大”列(例如,“最大卡路里”和“总卡路里”),这当然会使列数加倍。

甜点和肉是内在属性,因为它们不能被用户改变,但似乎它们可以通过一系列食物ID或散列来更有效地表示。拥有如此多的数据点(和列)来表示这种简单的分类似乎是多余的,而且我的表格非常大。我没有切换到组成员资格数据的数组的原因是因为我喜欢这个数据当前如何被对象本身访问。它直观,集中,而且似乎不易出错。

我不知道如何为列表管理用户定义的“最大值”,也许这些列/属性的增加是最好的选择。

我将不胜感激任何建议或评估我的方法和可能的替代方案的建议。

ruby-on-rails activerecord database-design
1个回答
1
投票

您可以在数据库中使用序列化并存储文本对象,但是当您选择它时将再次作为HASH或ARRAY访问,这可以解决您的问题而不是复制字段将其存储为HASH然后从中读取。

看看这个:

Rails: Serializing objects in a database?

http://apidock.com/rails/ActiveRecord/Base/serialize/class

© www.soinside.com 2019 - 2024. All rights reserved.