php - 嵌套登录之Mysql数据库设计(登录后再次登录)

标签 php mysql database

在我的应用程序中有两个用户 Manager 和 Team。 在第一次登录时,我正在检查用户是经理还是团队成员。我正在通过 user_type 检查它。 所以,

## User's table ##
----------
--> fieldnames

'user_id' 'username' 'email' 'password' 'user_type' (if 1 = user is manager , 0 = user is team member )
Row 1 -> '1' 'abc' 'abc@gmail.com' 'abc' '1' (user_type = 1 so Manager)
Row 1 -> '2' 'def' 'def@gmail.com' 'abc' '0' (user_type = 0 soTeam Member)


## Team's table ##
----------
--> fieldnames

'team_id' 'teamname' 'teamcode' 'user_id' 'user_type' 
Row 1 -> '1' 'TeamName1' 'AFE1(0' '1' '1' 
Row 2 -> '2' 'TeamName2' 'BCD@1(' '2' '1'

(所以,TeamName1 是由 abc 用户添加的,他是经理。

  • 唯一代码(AFE1(0) 发送到经理的电子邮件地址,它是团队代码,然后经理将单独提供给团队成员

    现在我对团队的独特性感到困惑,因为成员可以从一个团队注销并通过另一个团队的唯一代码登录并加入另一个团队)

  • SQLFiddle with the above data...

注意:团队代码是在用户注册为经理时生成的。

  • 唯一代码通过电子邮件发送给经理。然后经理会将该团队代码单独提供给团队成员。
  • 并且在加入团队时,团队成员将插入团队代码,然后团队成员可以加入团队。
  • 加入团队后经理可以将任务分配给经理。向团队成员提供反馈。
  • 团队成员可以退出一个团队并加入另一个团队。

以上流程是在以团队成员或经理身份登录后进行的。

所以,我的问题是有一个嵌套登录(一个登录又一个登录和任务分配过程是基于“teamcode”)

所以,我对数据库结构感到困惑,因为 teamcode 也是唯一的,team_id 也是唯一的?

最佳答案

据我了解,经理可以是其他团队的团队成员,而团队成员也是其他团队经理的一部分。

所以你不能在用户表中存储用户类型。所以你需要3张 table

1) 用户:存储用户信息,如姓名电子邮件等。

2) team : 存储团队信息,如'team_id' 'teamname' 'teamcode'

3) association : 关联用户和团队 (associationId, user_id, team_id, rollType)

如果要为每个关联存储不同的密码,则在关联表中添加密码。

当经理添加一个团队然后使用团队代码在团队中输入并使用关联表中的插入条目关联它时 user_id = 经理的用户 ID 团队 ID 您刚刚创建了 rollType 1(user_type = 1 所以经理)。

当经理创建一个用户作为团队成员时,如果它不是您系统的用户,他们会将其插入用户表并将其与 rolltype 2 相关联。

如果该用户已经在用户表中,则无需将其关联到用户表中。

因此,当用户登录时,您可以使用关联表获取团队列表。

关于php - 嵌套登录之Mysql数据库设计(登录后再次登录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36665459/

相关文章:

php - 需要执行composer和npm的WordPress插件的集成测试

php - 我如何将此 MySQL 数据转换为此 XML 字符串 (PHP)?

php - Yii 中 Thread 的访问模型

javascript - 使用相关复选框 jQuery 启用/禁用数组生成的输入

mysql - 更新生产数据库中的大量数据

java - 由于时区不正确,无法连接到 MySQL

mysql - 意外的字符串转换为十六进制

mysql - 为什么我在 LAG() 函数中遇到语法错误?

database - 归一化 - 2NF 与 3NF

java - 用于存储记录的数据库/缓存的纯 Java 替代方案