【发布时间】:2015-06-16 10:45:35
【问题描述】:
我很难弄清楚如何将每个玩家拥有的卡片存储在 SQL 数据库中。到目前为止,我的赌注是有一张带卡片的桌子:
[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 个可能的条目,而未来数据库大小会大大增加会有更多玩家或新集合
这个解决方案是否可以接受,或者有人可以推荐更好的解决方案吗?
【问题讨论】:
-
100万行不算大....
-
imo
cardId应该是在名称字段中存储fireball的表中的 int PK,playerName同上 -
我不会担心最大 250,000 条记录的大小,这对于表大小来说并不是很多。你甚至可以将你的表减少到
(PlayerID INT, CardID SMALLINT UNSIGNED, Quantity SMALLINT UNSIGNED),这意味着你的行大小只有 8 个字节,你仍然可以拥有 65535 个不同的卡,最大数量限制相同。因此,您的 250k 行表将占用 1.9MB,这根本不是很大! -
我认为 OP 需要的是在不影响性能的情况下进一步规范化
-
@MitchWheat 当然是。它可能不是巨大的,或大规模的,或全球规模的,但它肯定很大。
标签: c# mysql sql database database-design