【问题标题】:Email belongs to User - Using Email as username Cakephp 2.0.5电子邮件属于用户 - 使用电子邮件作为用户名 Cakephp 2.0.5
【发布时间】:2012-02-06 05:07:48
【问题描述】:

我有一个表 email_addresses 和一个表 users。我使用用户的电子邮件地址作为他们的用户名。所以用户表会是这样的:

email_address_id
password

email_address_id 字段只会在 email_addresses 表中查找用户名作为登录信息的电子邮件。

我知道我可以使用 auth 组件将用户名字段更改为另一个名称,例如 email_address,但我如何使用来自不同表的字段作为用户名?

现在我必须在电子邮件表和用户表中插入电子邮件,这似乎是非常糟糕的数据库设计。

任何帮助将不胜感激!

我使用的是 CakePHP 2.0.5

【问题讨论】:

    标签: database-design cakephp cakephp-2.0


    【解决方案1】:

    你真的需要这样做吗?将属于一起的东西放在一起是很好的。

    我会将电子邮件保留在用户模型中以进行身份​​验证。

    如果您需要,请将 email_addresses 用于后续电子邮件。

    编辑:

    现在,如果某些人被授予访问权限而其他人没有,我会在 User 模型中添加一个字段,例如 has_access int(1) 或任何与您交谈的内容,并在登录时检查它的值。

    【讨论】:

    • 我同意.. 你们的关系也有些可疑。查看this diagram,带有外键的表属于另一个表。所以你说“电子邮件属于用户”的地方,你真正的意思是“用户属于电子邮件”。这本质上意味着“Email hasMany Users”或“Email hasOne User”。您真的打算将一个电子邮件地址与多个用户帐户相关联吗?另外,如果这是一个 hasOne(1:1 关系),那么为什么要额外的表?
    • 嗯,除了那些将登录到数据库的人之外,我还有其他人的电子邮件地址。例如,它的工作方式如下:Person hasOne EmailAddress - EmailAddress belongsTo Person。然后这些“人”中的一些也将被允许登录。他们已经存在于表 email_addresses 中的电子邮件地址将成为他们的用户名。所以我必须将他们的 email_address 插入到一个新表中。这不是 hasMany 关系,每个用户只有一封电子邮件,我只是看不到添加数据库中其他地方已经存在的数据的意义。
    • 实际上我对我目前使用的表格有误,尽管我认为它不会改变任何东西。我将电子邮件地址作为人员表中的一个字段。所以每个人只有一个地址,然后我想这个人可能会使用persons表中的电子邮件字段作为他们的用户名登录。如果我不使用 Cake,我觉得这是设计数据库的最佳方式。我不能只在用户表中拥有电子邮件,因为并非所有人都会成为用户。为什么要重复数据?我没有看到好处。
    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2012-12-09
    相关资源
    最近更新 更多