2015-06-16 26 views
1

我真的很難搞清楚如何存儲每個玩家在SQL數據庫中擁有的卡。我的投注想法到目前爲止是有一個表,卡:C#存儲播放器卡數據庫設計

[id], [cardName] 

並將其與這樣的球員聯繫起來:

[id], [playeName], [cardId], [quantity] 

這種設置可以讓我的新卡伊斯利添加到數據庫中(當新卡可用),只需將它們插入卡表中即可。

但是我很擔心球員的表,因爲它可能會變得非常大非常快(具有約250卡套),它看起來像水木清華這樣的:

1 Bravd fireball 4; 2 Bravd Soldier 2; 3 Bravd PoisonSword 1, 4 John Soldier 3; .... etc 

允許多達250項的播放器。我會非常高興擁有1000名選手作爲第一個里程碑,但最多可以提供250 * 1000個參賽選手,而未來數據庫規模將會有更多選手或新隊伍將大幅增加

此解決方案是可接受的還是可能有人推薦解決方案更好

+3

一百萬行並不大.... –

+3

IMO'cardId'應該是一個int PK在名字段中存儲'fireball'的表中,對於'playerName'同上 –

+2

我不會關心250,000條記錄的最大大小,這在表格大小方面並不是很多。你甚至可以將你的表減少到'(PlayerID INT,CardID SMALLINT UNSIGNED,Quantity SMALLINT UNSIGNED)',這意味着你的行大小隻有8個字節,你仍然可以有65535個不同的卡,最大數量的限制是相同的。所以你的250k行的表將佔用1.9MB,這根本不是很大! – GarethD

回答

5

您可以添加其他表,以減少玩家名稱重複數據

card_table -> [card_id], [cardName] 
player_table -> [player_id] , [playerName] 
player_card_table -> [player_id],[card_id],[qty] 

希望這將有助於:)

+0

正是我想發佈的內容... – Bodo