2012-11-26 46 views
0

用戶已註冊多個團隊(少於30人)。Oracle - 存儲用戶設置

UserTeam表 - 用戶ID,TeamId

怎麼樣我存儲此爲varchar像 「123:0; 124:1; 155:1」,其中123,124和155是團隊的ID,有沒有更好的方法?或者也許只是「124:155」,這意味着只存儲擁有權限的teamid。

UserScore - UserId,ActivityId,ScoreId,TeamId's?

你對Oracle數據庫有何建議?

編輯:團隊的總數可能是幾萬或東西,但分配給用戶的球隊總數將少於30

+0

我會使用多對多的關係表。 – GuiGi

+0

@GuiGi你能解釋一下嗎? – user1831003

+0

這就是RobertMerkwürdigeliebe所回答的:將關係放在一個單獨的表中,並將外鍵限制到您的實體表中。 – GuiGi

回答

1

使用規範化規則來設計你的數據模型。從性能的角度來看,從這裏去除歸一化是必要的。

**User** 
UserId 
UserData 

**Team** 
TeamId 
TeamData 


**UserTeam** 
UserId 
TeamId 

foreign key constraints to user and team table 

**UseScore** 
UserId 
TeamId 
ActivityId 
Score 

foreign key constraints to user, team and activity table 
+0

因此ActivityId和Score會重複 - 意味着每個分數可能有30行? – user1831003

+0

這完全取決於您需要存儲的信息,功能規格。您是否需要爲用戶的每項活動保存分數? –

+0

我認爲你的功能規格並不完全清楚。但是將數據作爲csv字符串存儲在varchar2字段中並不是邁向恕我直言的方式。 –