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
我明白,我没有试图攻击某人或某事。但我的问题是:我应该选择哪条路线?对于查询的速度,WP是否会受到损害? – Solo
您应该选择更适合您目标的方法。我的意思是,如果您预见未来您的解决方案不会在新属性方面增长,请使用列。现在,如果你看到复杂性增加,那么动态属性表可能是最好的方法。 –
因此,为了给OP一个建议他的情况,使数据库具体,因为你有完全的控制,并把所有相关的领域在一行。 –