2013-11-24 52 views
0

我是否應該將標題,性別和稱呼等選項存儲爲整數,還是不相關,我可以將它們存儲爲字符串?將枚舉存儲爲整數與字符串是否有區別?

class User < ActiveRecord::Base 
    enumerize :gender, in: [:male, :female] 

    TITLE = { dr: 0, prof: 1, prof_dr: 2 } 
    def title 
    TITLE.key(read_attribute(:title)) 
    end 

    def title=(t) 
    write_attribute(:title, TITLE[t.to_sym]) 
    end 
end 

比方說,我有2000個用戶和6個可能的選項,爲他們每個人。

+0

整數通常對性能更好,但字符串更容易處理。 –

回答

0

在過去,當存儲空間昂貴時,有理由將字符串存儲爲數字。在這個時代,除了嵌入式應用程序(應該可能不是運行軌道)之外,沒有必要,特別是考慮到您的示例數據庫大小爲2000個用戶。

另外,如果您存儲您的字符串作爲一個數字,你將有以下缺點:

  • 增加代碼的複雜性
  • 數據庫不能爲「read」無碼(已經做了一些數據庫端口和寫入軌作爲後端數據分析的前端,這些都變得重要)。

爲了確保性能,請確保您的數據庫密鑰正確設置。

0

整數在數據庫級別上效果更好,但請確保您記得每個數字代表的是什麼。

字符串更容易處理,因爲人類比數字更能記住單詞,這就是爲什麼我們使用URL而不是IP的原因。

0

正如其他人所說,整數具有性能優勢。是否足夠重要是另一個問題。

我會建議你在編寫代碼和開發API時做任何自然的事情。這將使你的代碼對你自己(以及其他適用的代碼)更直觀,並使你在開發中更加高效。