-1

一部のデータを正規化する必要があり、バックエンド/データベースプログラミングは初めてなので、これはかなり明白かもしれませんが、検索しても何も見つかりませんでした.

私は'empires'テーブルを持っています。各帝国'civilization'は、次のいずれかになります。

- British
- French
- Dutch
- Ottoman
- Spanish

現在、empiresテーブルには呼び出されたタイプ VARCHAR(255) の列が含まれており、civilizationそこに上記の文字列の 1 つが格納されています。

もちろん、後で私はそれがあまりスケーラブルではなく、良い考えではないことに気づいたので、私がやろうと決めたcivilizationのは、名前を含むidとstringの2つの列を含むという別のテーブルを作成することでした。

私の質問は、たとえば、すべての'British'帝国がcivilizationtable のまったく同じ行を指すようにするにはどうすればよいですか?

4

1 に答える 1

0

UPDATED 2 : 1 対多の関連付け

class Empire < ActiveRecord::Base
  attr_accessible :name
  belongs_to :civilization
end

class Civilization < ActiveRecord::Base
  attr_accessible :name
  has_many :empires
end

british = Civilization.new(:name => 'British')
british.empires.build(:name => 'Britian')
british.empires.build(:name => 'India')
british.save

india = Empire.where(:name => 'India')
britain = Empire.where(:name => 'Britain')

puts india.civilization == britain.civilization # => true
puts india.civilization.inspect                 # => <Civilization:0x04121231 @name="British">
puts india.civilization.empires.inspect         # => [ <Empire:0x0123443 @name="Britain">, <Empire:0x0124543 @name="India"> ]

レコードの ID を保存するcivilization_idには、テーブルにが必要です。empirescivilizations

于 2012-12-09T06:32:55.517 に答える