数据库半满了零

时间:2013-11-06 15:02:54

标签: ruby-on-rails database-design

我有一个Product模型。该产品属于以下两类之一:易腐烂或不易腐烂。

易腐产品具有以下规格:

  • 日期时间:创建日期
  • 日期时间:到期日期
  • 整数:重量

非易腐产品具有以下规格:

  • 日期时间:创建日期
  • string:Brand
  • 整数:形状

首先我想这样做:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string :name
      t.boolean :perishable
      t.datetime :creation_date
      t.datetime :expiration_date
      t.integer :weight
      t.string :brand
      t.integer :shape

      t.timestamps
    end
  end
end

但是,如果我这样做,我的数据库将被填充为零。这是一个问题吗?我应该采取另一种方式吗?

2 个答案:

答案 0 :(得分:1)

这听起来像是使用子类的绝佳机会。易腐烂和不易腐烂的物品将是从产品延伸的两个不同的类别。

答案 1 :(得分:0)

如果您预见到不同的产品类型越来越多地具有比我建议转变为多态类型更多的独特属性,那么如果产品属性几乎不会发生太大变化,您可以保留此方法并可选择转向STI模型方法,db列保持不变,但代码将有更好的分离。