我正在使用C#进行在线TCG,并且无法找到存储和检索播放器卡片集的有效解决方案。基本上我想要的是数据库中的每个玩家都有一个"卡集合"我认为这将是某种类型的字典,其中包含表单的条目(卡片ID,金额拥有)。我将经常添加,删除和编辑此集合中的每个条目。我正在研究XML序列化,但似乎对于大量的卡来说它会很慢。我还想过像做一串
一样" ID1,amount1
ID2,AMOUNT2"
只是分开了','和换行符,但我觉得编辑字符串会很麻烦。其他人的建议就像一个包含以下字段的新表:userid,cardid,amount。我正在使用MySQL,并不熟悉这些数据库解决方案。对此有最佳解决方案吗?
答案 0 :(得分:1)
[Users ]
|UserID_|
|.... |
|_______]
[Cards ](all cards in the TCG)
|CardID_ |
|.... |
|________|
[Decks ]
|DeckID_ |
|DeckUserID | -> Users.UserID 1..n
|.... |
|___________|
[DeckCards]
|DeckID_ | -> Decks.DeckID 1..n
|CardID_ | -> Cards.CardID (1..n||1..1) to fit your needs
[_________|
[Collection ]
|CollectionID_|
|UserID | -> Users.UserID 1..1 to bound only one collection per user
|.... |
|_____________|
[CollectionCards]
|CollectionID_ | -> Collection.CollectionID 1..n
|CardID_ | -> Cards.CardID (1..n||1..1) to fit your needs
[_______________|
您只显示:用户 - >收藏 - > CollectionCards->卡片,用于在用户集合中显示卡片。
您只显示:用户 - > Deck-> DeckCards->卡片以显示卡片中的卡片
我希望可以理解......
答案 1 :(得分:0)
绝对在数据库中使用连接表。如果您拥有正确的索引和引擎设置,那么读取集合可能非常有效。操作集合也会更有效率 - 序列化并不便宜!
如果您想要制作有关普通玩家收藏品构成的统计数据,它也会很好地为您服务。