我将Magic the Gathering卡的信息存储在数据库中,我的疑问是如何存储并非总是存在的信息。
即。生物有力量/韧性,而其他牌则没有。我应该为每张卡存储它,并为那些没有它的卡留空吗?或者创建另一个表来存储这些信息,例如:
cardID power resist
这会如何影响查询时间?
答案 0 :(得分:0)
从标准化的角度来看,功率和电阻在功能上取决于cardID,因此应该与依赖于cardID的所有其他事物在同一个表上。 如果我正确地记住魔法是如何工作的,那么你将拥有一张带有几列的大表,用于卡的所有功能:功率,阻力,成本(我将其设计为VARCHAR),图片。 然后,由于效果和卡片之间存在1-N(或MN,不记得)关系,你将有一个带效果的额外表,它使用cardID作为外键(或者可能是一个调度表,如果它是MN)。
无论如何,我发现卡片上只有4个字段+ ID,而你不用担心,这是相当轻松的。即使您想将成本建模为多个INT,元素的数量也是有限的(5-6?)。对于DBMS,具有10列甚至20列的表不是问题。 也许你会对效果有更糟糕的时间(如果你打算实施它们)。