5

在许多教程(尤其是身份验证)中,演讲者说将用户身份验证和配置文件信息放在名为 User 的同一个表(模型)中。

我的问题很简单:把所有东西都放在一张桌子上安全吗?(奖励:这是最佳做法吗?)

我宁愿建议将身份验证信息(电子邮件、密码、盐......)和个人资料信息(名字、姓氏、出生日期、位置、性别......)分成两个模型:用户(用于身份验证)和配置文件,并通过 has_one/belongs_to 关联链接模型。

我错了吗?你有什么建议?

谢谢。

4

2 回答 2

6

如果您想遵循数据库规范化,您应该将表分开。但是,有时它不是最佳选择...例如,如果您的表users只有email, password(用于身份验证)和name. 我不会创建一个profile表来存储name,对吗?

因此,这将取决于您的要求来做出设计决定......

我发现了这篇有趣的帖子,@D Roddis 在其中解释了三种不同方法的一些优点和缺点Storing User Profile in Users TableStoring User Profile in User_Profile Table 1-1 relationship to usersStoring User Profile as properties and values in tables.

我希望它有帮助...

于 2012-08-20T15:19:53.583 回答
1

我自己会把它们放在单独的模型中。

有多少动作同时作用于用户和个人资料?不多,在这两种构造中,他们需要对彼此一无所知(或仅是身份)的很多地方。

于 2012-08-20T15:04:28.823 回答