2016-04-28 10 views
1

TL; DR:如果您有30个不同的值都指向相同的对象ID,并且您需要全部检索它们,但是如果此数据位于单独的行中或全部位于同一行(多列)中,它会有什么区别?如果我需要请求来自那一行的所有数据,列数是否重要?


小背景:

的WordPress有这个很搞笑的数据库设置(IMO):

  • 文章有自己的表和所有重要的数据是在纵“布局“(如第一个代码块)
  • 您可能想要添加的所有其他相关数据都有单独的表格,就像第二个代码

我想我明白他们在做什么 - 博主或主题建设者不想惹DB。


这是我第一次从头到尾项目,我不是数据库专家。所以我认为最好从我的老朋友WordPress做起。我使用Node.js服务器,GraphQL和MariaDB数据库。

项目每个帖子需要大量的数据(个人,无法正常化),我最终会遇到这样一种情况,即在邮政表中有20万行,在其他情况下有30多倍,这就产生了一个问题:

为什么不把所有的30个值放在列而不是行中?

我看过几个小时的技术教程和阅读博客,但我仍然不是100%确定它是如何工作的:如果我在一个请求中需要下面的所有数据,我应该选择哪个“设计”?是WordPress错误&他们只是为了方便用户(第二个有很多重复键)这么做?

我不太在乎存储,我关心超快速读取和快速写入。


------------------------------------------------------------------- 
id | post id | color | shape | weight | length | width 
------------------------------------------------------------------- 
1  55  blue  sqare  50  110  110 

------------------------------------- 
id | post_id | key | value 
------------------------------------- 
1  55  color  blue 
2  55  shape  sqare 
3  55  weight  50 
4  55  length  110 
5  55  width  110 

回答

1

WordPress的这样做,作为其产品的发展,促进少数据库更改。想象一下这种情况:如果他们必须创建一个新列以对应一个新属性,那么对于用户而言,在每次更改时都难以促进所需的数据库更改。事实上,大多数动态数据库,在像Wordpress这样的CMS中都有这个概念,以便于进行简单的更改。其他类型的系统也是这样做的。

+0

我明白,我没有试图攻击某人或某事。但我的问题是:我应该选择哪条路线?对于查询的速度,WP是否会受到损害? – Solo

+0

您应该选择更适合您目标的方法。我的意思是,如果您预见未来您的解决方案不会在新属性方面增长,请使用列。现在,如果你看到复杂性增加,那么动态属性表可能是最好的方法。 –

+0

因此,为了给OP一个建议他的情况,使数据库具体,因为你有完全的控制,并把所有相关的领域在一行。 –

相关问题