用户登录系统数据库架构...请批评?
Posted
技术标签:
【中文标题】用户登录系统数据库架构...请批评?【英文标题】:User Login System Database Schema...Please critique? 【发布时间】:2012-10-11 01:22:13 【问题描述】:我正在为我的网站创建一个用户登录系统,我需要一些帮助来创建数据库。所以到目前为止,我有这 3 张桌子。你认为这是一个合适的数据库模式吗?如果没有,那你有什么建议?
---Users---
user_id
user_name
user_email
user_firstname
user_lastname
user_state
user_country
user_occupation
user_dob
user_accountcreationdate
user_sex
user_role
user_password
---Roles---
role_id
role_name
role_description
---Logins----
user_id
last_login
browser_type
ip_address
编辑**** 那么这会是正确的吗?我在第 4 个表中添加了用户角色。如果我添加第 4 个表,这是否意味着我可以从 Users 表中删除 user_role?
---Users---
user_id
user_name
user_email
user_firstname
user_lastname
user_state
user_country
user_occupation
user_dob
user_accountcreationdate
user_sex
user_role
user_password
---Roles---
role_id
role_name
role_description
---Logins----
user_id
last_login
browser_type
ip_address
---User Roles---
user_id
role_id
【问题讨论】:
【参考方案1】:是的,它看起来不错.. 但是为什么不使用 Active 标记来激活/停用用户。并且仅在他们通过唯一链接或 OTP 验证其电子邮件身份后才允许他们登录。
【讨论】:
【参考方案2】:您的架构显示每个用户将只有一个角色。您可能会很快发现您想要做的比这更精细。我建议使用将 user_id 映射到 role_id 的 user_role 表(以及 date_granted、date_revoked、granted_by 等)。
如果您想真正规范化,users.occupation 将是 occupations 表的外键。 州和国家。
要非常小心如何存储密码。
如果您正在记录成功的登录,为什么不也记录不成功的登录。这可能会让您知道有人需要帮助或帐户遭到黑客入侵。
祝你好运。
【讨论】:
我编辑了我的第一篇文章。你能看一下吗。谢谢 如果您要使用 user_roles 表来映射两者,那么您就不需要 users.user_role 列。以上是关于用户登录系统数据库架构...请批评?的主要内容,如果未能解决你的问题,请参考以下文章