两个用户相关的表?

时间:2013-01-19 05:08:52

标签: ruby-on-rails devise

我正在制作一个使用用户模型的应用程序,该模型将使用设计进行身份验证。我也用它已经拥有的大量数据播种它,并为我预期的数据制作列(例如社交网络配置文件和我尚未拥有的个人信息)。随着表列开始累加,我想到我可能会为身份验证数据创建一个User表,然后是某种User_Profile表,以获取有关将在其配置文件页面上显示的用户的详细信息。我想知道这是否是一个更好的主意,或者只是将所有内容都放在一个表中,然后继续添加更多与用户相关的列,就像我想到的那样。

User.create!(


               devise related columns ommitted....

               firstname: "Marcy",
               middle: "Eve",
               lastname: "Bishopf",
               sex: "f",
               company: "Johnston Windows",
               address: "210-3260 North Dr",
               city: "Victoria",
               province: "BC",
               postal: "V9T 1XS",
               email: "mb@blahblah",
               phone: "(250) 756-3777",
               website: ""
               twitter: "",
               facebook: "",
               linkedin: "",
               year: "",
               school: ""
               motto: ""

               more columns for personal data that I haven't thought of yet


               )

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要在数据库中保留用户身份验证以及用户元数据(名称和其他配置文件字段)。
您绝对应该规范化数据库,首选用户表进行身份验证以及用户表中user_id引用的单独用户配置文件表。

这一点很重要,原因如下:

  1. 当用户需要登录时,您只需要根据用户表检查密码的哈希值。
  2. 当用户登录时,您只需使用登录用户的user_id从用户配置文件表中获取配置文件。
  3. 将新列添加到用户配置文件表时,您的用户表不会受到影响。
  4. 但是,当您的用户数量很大时,更改表用户配置文件可能会导致锁定表格的成本高昂。