2016-04-16 57 views
1

在我的应用程序中有两个用户Manager和Team。 在第一次登录时,我在检查该用户是经理还是团队成员。我正在通过user_type检查它。 所以,Mysql数据库设计的嵌套登录(登录后的另一登录)

## 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' '[email protected]' 'abc' '1' (user_type = 1 so Manager) 
Row 1 -> '2' 'def' '[email protected]' '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' '[email protected](' '2' '1' 

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

  • 唯一代码(AFE1(0)被发送到管理员的电子邮件地址,它是teamcode然后经理将分别给予团队成员

    ,现在我卡住有关球队的唯一性,因为会员可以从一个团队注销,并通过另一支球队的唯一代码登录并加入另一支球队)

  • SQLFiddle with the above data...

注:当用户注册为经理小组代码生成。

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

上述过程是在作为团​​队成员或经理登录后。

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

所以,我很困惑关于数据库的结构,因为teamcode也是独一无二team_id也是独一无二的?

+0

@ryan。如果你有任何想法,请告诉我,我现在仍然陷在这个问题中。 – Bhavin

+0

@RyanVincent。感谢您的回复... 经理可以成为另一个团队的团队成员意味着第一个经理可以通过给他团队代码添加第二个经理作为团队成员,以便解决时间问题。昨天我的问题是通过制作复杂的mysql结构来解决的,但根据我的知识,我发现它非常脏,所以我希望有一些完美的数据库结构,当这种工作重复时。 – Bhavin

+0

处理这种情况的“标准”方式是在用户 - 团队和角色之间建立“多对多”的关系。你如何代表这种关系?为什么不告诉我们你有什么?即添加“角色”表和将其链接在一起的其他表。 –

回答

1

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

因此您不能在用户表中存储用户类型。所以你需要3台

1)用户:像名电子邮件ECT存储用户信息..

2)团队:像“TEAM_ID'teamname 'teamcode'

3)联想专卖店球队信息:将用户和团队关联在一起 (associationId,user_id,team_id,rollType)

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

当管理员添加一个团队,然后使用teamcode在团队中输入条目,并使用关联表中的插入条目将其关联它user_id =您刚刚创建的用户ID团队ID rollType 1(user_type = 1 so Manager)。

当管理员创建一个用户作为团队成员将其插入它在用户表,如果它不是你的系统的用户,如果用户已经在用户表不仅仅是关联也没有必要将其与rolltype 2.

关联在用户表中输入它。

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

+0

ohk。很好,这是我需要的解决方案。用户和团队协会 非常感谢您的回答。 – Bhavin

0

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

+0

刚刚完成我的数据库设计之后,我会毫无疑问地做到这一点,我被困在数据库设计和团队模块的独特性中。 – Bhavin