价目表如何在数据库中存储?

时间:2013-02-18 21:48:34

标签: ruby-on-rails ruby-on-rails-3.1

我需要在数据库中存储一个价格表。

存储价格表的最佳方法是什么?

价格表的例子:

enter image description here

我想到了2个解决方案。

创建一个名为products的表,其中包含以下列:

name (varchar)
price (integer)
price_2 (integer)

该名称将是例如“product_a1”,用于指代YAML翻译文件。

然后创建产品的所有名称。在我的例子中,例如约有100个。

解决方案2:

将所有数据存储在一行中。所以表格列是:

product_a1
product_a2
product_a3
product_b1
product_b1_2
product_b2
product_b2_2

还有99个..

PS:我只有1个价目表

2 个答案:

答案 0 :(得分:1)

为什么不使用Entity–attribute–value model(EAV),这样您就可以根据需要在模型上获得尽可能多的属性。它为您提供了极大的灵活性,因此将来您可以动态添加更多属性,而无需重构代码。

答案 1 :(得分:0)

为什么不创建两个表之间有关系的表:

class Product < ActiveRecord::Base
  has_many :prices
end

class Price < ActiveRecord::Base
  belongs_to: :product
end

这使您可以根据需要灵活地在将来添加其他价格。我不愿对具有固定限制的数据库进行硬编码。