【问题标题】:MySQL normalizing data not always presentMySQL 规范化数据并不总是存在
【发布时间】:2013-08-14 04:11:56
【问题描述】:

我将万智牌的信息存储在数据库中,我的疑问是如何存储并不总是存在的信息。

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

cardID power resist

这将如何影响查询时间?

【问题讨论】:

  • 只有几千张mtg卡。只有当您的数据库服务器是一台动力不足的机器时,担心这样一个小数据集的速度才是一个问题,在这种情况下,您遇到的问题不仅仅是一个缓慢的数据库。
  • @MarcB 嗯,很高兴知道它不会在服务器上花费太多,在这种情况下使用额外的表是正确的方法吗?
  • @proskor Ty,我会在下班时更加专注地阅读这篇文章......看起来就像我需要的那样。

标签: mysql normalization


【解决方案1】:

从规范化的角度来看,功率和电阻在功能上依赖于 cardID,因此应该与依赖于 cardID 的所有其他事物在同一个表上。 如果我没记错魔法是如何工作的,你会有一张大表,其中包含一张卡片的所有特性的几列:功率、阻力、成本(我将其建模为 VARCHAR)、图片。 然后,由于效果和卡片之间存在 1-N(或 M-N,不记得)关系,您将有一个带有效果的额外表,它使用 cardID 作为外键(或者可能是一个调度表,如果它是M-N)。

不管怎样,我发现卡片只有 4 个字段 + ID,你不必担心太多,而是相当少。即使您想将成本建模为多个 INT,元素的数量也是有限的(5-6 个?)。具有 10 甚至 20 列的表对于 DBMS 来说不是问题。 也许您会在效果方面遇到更糟糕的情况(如果您打算实施它们)。

【讨论】:

    猜你喜欢
    • 2012-03-08
    • 2011-12-16
    • 2013-07-17
    • 1970-01-01
    • 2012-09-08
    • 2011-05-18
    • 1970-01-01
    • 2014-07-26
    相关资源
    最近更新 更多