Raylar bir tablo ne bir dizin eklemek için zaman | Netgez.com
SORU
7 EYLÜL 2010, Salı


Raylar bir tablo ne bir dizin eklemek için zaman

Raylar veritabanı ile ilgili bir sorum var.

  • Ben add "" tüm yabancı anahtarlar gibi""? xxx_id dizin olmalıdır
  • "" Otomatik olarak oluÅŸturulan "" sütun? id dizin eklemek gerekir mi
  • "Dizin(Özel)" için otomatik olarak oluÅŸturulan "" sütun? id ekleyeyim

  • (add_index (:users, [:category, :state_id]), Ne Olur? bir kere de dizin için iki yabancı anahtarları eklersem Nasıl her anahtar dizini ekleyerek bu farklı mı?

    class CreateUsers < ActiveRecord::Migration
      def self.up
        create_table :users do |t|
          t.string :name
          t.integer :category_id 
          t.integer :state_id
          t.string :email
          t.boolean :activated
          t.timestamps
        end
      # Do I need this? Is it meaningless to add the index to the primary key?
      # If so, do I need :unique => true ?
      add_index :users, :id 
      # I don't think I need ":unique => true here", right?
      add_index :users, :category_id # Should I need this?
      add_index :users, :state_id # Should I need this?
      # Are the above the same as the following?
      add_index (:users, [:category, :state_id])
      end
    end
    

Harika bir cevap ÅŸu ana kadar. Ek soru.

  • ""Xxx_id, deÄŸil mi? dizin ile benzersiz eklemeliyim

CEVAP
7 EYLÜL 2010, Salı


Ben add "" tüm yabancı anahtarlar gibi""? xxx_id dizin olmalıdır

Bu sütunda sıralama arama işlemini hızlandırır çünkü, daha iyi olurdu. Ve Yabancı anahtarlar bir şey aranır.

"" Otomatik olarak oluşturulan "" sütun? id dizin eklemek gerekir mi

Hayır, Bu zaten raylar tarafından yapılır

"Dizin(Özel)" için otomatik olarak oluşturulan "" sütun? id ekleyeyim

Hayır, yukarıdaki gibi

(add_index (:users, [:category_id, :state_id]), ne olur? bir kere de dizin için iki yabancı anahtarları eklersem Nasıl her anahtar dizini ekleyerek bu farklı mı?

Sonra endeks iki sütun birleştirilmiş bir göstergesidir. 7 ** biri için tüm kayıtlar istediğiniz sürece herhangi bir anlam ifade etmiyorVE8 ** (category_id category olması gerekir) aynı zamanda.

Bir Dizin bu aşağıdaki istek hızlandıracak gibi

# 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)

Nerede

add_index :users, :category_id
add_index :users, :state_id

bu istekleri hızlandırır:

# 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)

""Xxx_id, deÄŸil mi? dizin ile benzersiz eklemeliyim

Eğer bunu yaparsanız hayır, yalnızca bir kullanıcı bir kategori olabilir, ama kategori anlamını daha fazla koyabilirsinizbirçokbir kategori içine kullanıcı. User model belongs_to :category Kategori modelinizi has_many :users gibi bir şey böyle bir şey var. Eğer has_many bir ilişkiniz varsa foreign_key alanında benzersiz olmalıdır!

tadmanharika answer. bir göz atmalısınız bu konuda daha ayrıntılı bilgi için

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • Shaollin Animes

    Shaollin Ani

    19 HAZÄ°RAN 2013
  • WK

    WK

    9 Ocak 2006