将枚举存储为整数与字符串之间是否存在差异?

时间:2013-11-24 17:21:25

标签: mysql ruby-on-rails ruby

我是否应该将标题,性别和称呼等选项存储为整数,或者它是否相关,我可以将它们存储为字符串?

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个可能的选项。

3 个答案:

答案 0 :(得分:0)

整数在数据库级别上工作得更好,但要确保记住每个数字的含义。

字符串更容易使用,因为人们记住单词比数字更好,这就是我们使用URL而不是IP的原因。

答案 1 :(得分:0)

正如其他人所提到的,整数具有性能优势。是否足够重要是另一个问题。

我建议你在编写代码和开发API时做一些自然的事情。这将使您的代码对您自己(以及其他适用的代码)更直观,并使您在开发中更有效率。

答案 2 :(得分:0)

过去,当存储空间成本高昂时,有理由将字符串存储为数字。在这个时代,除了嵌入式应用程序(可能不应该运行rails)之外,没有必要,特别是考虑到您的示例数据库大小为2000个用户。

此外,如果您将字符串存储为数字,则会有以下缺点:

  • 代码复杂性增加
  • 没有代码就无法“读取”的数据库(完成了一些数据库端口和写入的rails作为后端数据分析的前端,这些都变得很重要。)

对于性能问题,请确保正确设置数据库密钥。