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

  • arnejann

    arnejann

    3 Kasım 2007
  • Cartoonium

    Cartoonium

    11 NİSAN 2011
  • kylelandry

    kylelandry

    9 AĞUSTOS 2007