我正在将Magic the Gathering卡的信息存储在数据库中,我的疑问是如何存储并不总是存在的信息。

也就是说,生物具有力量/防御力,而其他牌则没有。我应该为每张卡都存储它,对没有它的卡留空吗?或创建另一个表来存储此信息,例如:

cardID power resist


这将如何影响查询时间?

最佳答案

从规范化的角度来看,功率和电阻在功能上取决于cardID,因此应与所有其他取决于cardID的事物位于同一表中。
如果我正确地记得魔术是如何工作的,那么您将拥有一张大桌子,上面有几列,用于显示卡的所有功能:功率,电阻,成本(我将其建模为VARCHAR),图片。
然后,由于效果和卡片之间存在1-N(或MN,不记得了)的关系,因此您将拥有一个带有效果的额外表,该表将cardID用作外键(如果是,则可能是调度表) MN)。

无论如何,我发现卡只有4个字段+ ID,您不必担心,它相当可观。即使您希望将成本建模为多个INT,元素的数量也是有限的(5-6?)。对于DBMS,具有10列甚至20列的表不是问题。
也许您会在效果方面遇到更糟糕的时间(如果您打算实施它们)。

关于mysql - MySQL规范化数据并不总是存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18216781/

10-10 03:40