2016-04-16 83 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