MySQL规范化数据并不总是存在

时间:2013-08-13 18:45:13

标签: mysql normalization

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

即。生物有力量/韧性,而其他牌则没有。我应该为每张卡存储它,并为那些没有它的卡留空吗?或者创建另一个表来存储这些信息,例如:

cardID power resist

这会如何影响查询时间?

1 个答案:

答案 0 :(得分:0)

从标准化的角度来看,功率和电阻在功能上取决于cardID,因此应该与依赖于cardID的所有其他事物在同一个表上。 如果我正确地记住魔法是如何工作的,那么你将拥有一张带有几列的大表,用于卡的所有功能:功率,阻力,成本(我将其设计为VARCHAR),图片。 然后,由于效果和卡片之间存在1-N(或MN,不记得)关系,你将有一个带效果的额外表,它使用cardID作为外键(或者可能是一个调度表,如果它是MN)。

无论如何,我发现卡片上只有4个字段+ ID,而你不用担心,这是相当轻松的。即使您想将成本建模为多个INT,元素的数量也是有限的(5-6?)。对于DBMS,具有10列甚至20列的表不是问题。 也许你会对效果有更糟糕的时间(如果你打算实施它们)。