Det skulle vara bättre, eftersom det påskyndar sökningen vid sortering i den här kolumnen. Och främmande nycklar är något man letar efter mycket.
Sedan version 5 av rails kommer indexet att skapas automatiskt, för mer information se här .
Nej, detta görs redan med räls
Nej, samma som ovan
Då är indexet ett kombinerat index av de två kolumnerna. Det är inte meningsfullt, om du inte vill ha alla poster för ett category_id
OCH ett state_id
(Det ska vara category_id
inte category
) samtidigt.
Ett index som detta skulle påskynda följande begäran:
# rails 2
User.find(:all, :conditions => { :state_id => some_id, :category_id => some_other_id })
# rails 3
User.where(:state_id => some_id, :category_id => some_other_id)
Var
add_index :users, :category_id
add_index :users, :state_id
kommer att påskynda dessa förfrågningar:
# rails 2+3
User.find_by_category_id(some_id)
User.find_by_state_id(some_other_id)
# or
# rails 2
User.find(:all, :conditions => {:category_id => some_id})
User.find(:all, :conditions => {:state_id => some_other_id})
# rails 3
User.where(:category_id => some_id)
User.where(:state_id => some_other_id)
Nej, för om du gör detta kan bara en användare vara i en kategori, men meningen med kategori är att du kan lägga till fler många användare i en kategori. I din User
modell du har något sånt här belongs_to :category
och i din kategorimodell något som has_many :users
. Om du har en has_many
relation foreign_key
fältet får inte vara unikt!
För mer detaljerad information om detta bör du ta en titt på tadman är fantastiskt svara .