0

我正在制作一个带有用户模型的应用程序,该模型将使用设计进行身份验证。我还使用我已经拥有的大量数据为其播种,并为我预计拥有的数据(例如社交网络配置文件和我还没有的个人信息)制作列。随着表列开始加起来,我想到我可能会创建一个 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


               )
4

1 回答 1

0

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

这很重要,原因如下:

  1. 当用户需要登录时,您只需根据用户表检查密码的哈希值。
  2. 当用户登录时,您可以简单地使用登录用户的 user_id 从用户配置文件表中获取配置文件。
  3. 将新列添加到用户配置文件表时,您的用户表不受影响。
  4. 但是,当您的用户数量很大时,更改表用户配置文件可能是锁定表的昂贵操作。
于 2013-01-19T05:20:08.767 回答