mysql - 在数据库中存储登录详细信息

标签 mysql sql database authentication coldfusion

我有 3 个用户角色,ADMIN、GURDIAN、STUDENT。我有使用 uniqueID(即 GurdianID、StudentID)链接的 GurdianProfile 和 StudentProfile 表。这是连接“gurdianLogin”表和“studentLogin”表的链接。

我的问题是:构造“用户登录”表的标准方法是什么?我应该使用一张表来存储不同类型的用户(即所有 3 种类型的用户)吗?还是使用 3 个不同的表在单个数据库上使用不同类型的用户更好?

最佳实践和策略或建议是什么?

注意:我使用的是 ColdFusion、MySQL

最佳答案

如果您只有一个登录点,我认为将凭据分布在 3 个不同的表中是一个缺陷,因为如果您添加了第 4 种用户类型,那么您将不得不更新您的登录系统以合并新的用户类型。因此,我会使用单个用户表,然后如果您的监护人/学生/管理员配置文件需要单独的表,请将它们链接到用户表。

_User_
id
email
username
password (this better not store the password in plain text..)

_GuardianProfile_
id
userid (links to user table)
(GuardianProfile fields)

_StudentProfile_
id
userid (links to user table)
(StudentProfile fields)

_AdminProfile_
id
userid (links to user table)
(AdminProfile fields)

如果三种配置文件类型中的列相同,则将其压缩到一个带有类型列的表中可能有意义。

关于mysql - 在数据库中存储登录详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329532/

相关文章:

php - mysql 根据标题和描述对重复项进行分组

java - 从两个不同的 mysql 数据填充 jcombobox

mysql数据库导入特别慢

MySQL - 选择表中的行时没有锁定

SQL Group By 和内连接

database - Grails 数据库迁移插件 - Java 堆空间

php - 使用 MySQL 从另一个表复制数据时缺少行

sql - 合并多个 SELECT 语句

sql - 使用 sp_send_dbmail(csv 文件)时设置分隔符

php - 当他们使用电子邮件登录时从表中获取用户名