用户登录系统数据库架构...请批评?

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 列。

以上是关于用户登录系统数据库架构...请批评?的主要内容,如果未能解决你的问题,请参考以下文章

1,架构总设计及安全思路

SQL SERVER 2008 服务器登录名角色数据库用户角色架构的关系

清洁架构中的数据库登录?

从零开始学架构架构知识领域

jumpserver之功能架构分析

用户登录——三层架构