mysql - 各个互联域的用户是否应该放在同一个数据库表中?

标签 mysql database database-design

例如,我们有3种类型的用户:内部用户(我们公司的员工)、客户和承包商,他们都在同一个表中,通过“类型”字段来区分它们。我们还为每个域设置了不同的域:internal.domain.com、clients.domain.com 和contractors.domain.com。每个域映射到一个用户类型。为了登录这些门户,您显然需要拥有正确的用户/密码,并且用户类型也必须与域相匹配。这些用户是否应该从 1 个表拆分为 3 个表?

最佳答案

您不需要 3 个用户表。您正在描述“角色”的概念,这通常会产生以下类型的表:

User
Role
User_Role (cross reference to declare which users have which roles)

您将扮演 3 个角色,一种是内部角色,一种是客户角色,一种是承包商角色。这是规范化设计,但您可以在单个用户表中使用非规范化设计(但我不推荐它)。我认为根据角色的不同,你会有不同的逻辑。

此外,我应该指出,考虑到您上面描述的用户和站点的类型,很自然地会考虑使用多个 LDAP 存储进行此类身份验证,例如,可以使用 3 个不同的 Active Directory 来实现。这允许您将身份验证和授权委托(delegate)给控制这些域的 IT 人员。

关于mysql - 各个互联域的用户是否应该放在同一个数据库表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205300/

相关文章:

php - 连接错误 - SQLSTATE[HY000] [2002] 操作超时

php - 使用主从设置执行 mysql 事务?

mysql - 在 2 个表之间进行连接的选择期间 where 子句中的分配顺序

php - UTF-8贯穿始终

mysql 关系,使它们可选?

postgresql - 如何将具有 n 列的表映射到数据库?

mysql - 创建非破坏性 mysql 查询,能够创建表或更新缺少字段的表

sql - 什么时候需要对主键和外键施加约束?

database - 将 xls 文件上传到数据库的最快方法

mysql - 哪种 MySQL 数据类型用于调度?