嵌套登录的Mysql数据库设计(登录后再登录)

时间:2016-04-16 14:34:14

标签: 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...

注意:当用户注册为Manager时会生成Team Code。

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

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

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

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

2 个答案:

答案 0 :(得分:1)

据我所知,经理可以成为其他团队成员的一员,团队成员也是其他团队经理的一部分。

因此您无法在user表中存储用户类型。所以你需要3个表

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

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

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

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

当经理添加一个团队然后使用团队代码在团队中进行输入以及使用关联表中的插入条目将其关联起来user_id = manger的用户ID团队ID您刚创建了rollType 1(user_type = 1 so manager)。

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

如果该用户已经在用户表中而不仅仅是关联它,则无需在用户表中输入它。

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

答案 1 :(得分:0)

您必须为每个登录过程运行检查查询,无论团队成员是否已存在于其他一个团队表中。如果有他的记录然后做你的限制。