Sql 如果我需要从那一行请求所有数据,列计数是否重要?

Sql 如果我需要从那一行请求所有数据,列计数是否重要?,sql,database,Sql,Database,TL;DR:如果您有30个不同的值都指向同一个对象id,并且您需要全部检索它们,那么如果这些数据是在单独的行中还是在同一行(许多列)中,会有什么区别吗 小背景: WordPress有一个非常有趣的数据库设置(IMO): 帖子有自己的表格,所有基本数据都是垂直“布局”(如第一个代码块) 您可能希望添加到post的所有其他相关数据都有单独的表,如第二个代码中所示 我想我理解他们在做什么——博客作者或主题建设者不想和星展混为一谈 这是我从开始到完成的第一个项目,我不是数据库专家。所以我想最好以

TL;DR:如果您有30个不同的值都指向同一个对象id,并且您需要全部检索它们,那么如果这些数据是在单独的行中还是在同一行(许多列)中,会有什么区别吗


小背景:

WordPress有一个非常有趣的数据库设置(IMO):

  • 帖子有自己的表格,所有基本数据都是垂直“布局”(如第一个代码块)
  • 您可能希望添加到post的所有其他相关数据都有单独的表,如第二个代码中所示
我想我理解他们在做什么——博客作者或主题建设者不想和星展混为一谈


这是我从开始到完成的第一个项目,我不是数据库专家。所以我想最好以我的老朋友WordPress为例。我使用Node.js服务器、GraphQL和MariaDB数据库

项目要求每个帖子都有大量数据(单个,无法正常化),最终我会遇到这样的情况:post表中有200000行,其他表中有30倍,这就提出了一个问题:

为什么不把所有30个值都放到列而不是行中呢

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

我不太关心存储,我关心的是超快速读取和快速写入




Wordpress这样做是为了在产品发展过程中减少数据库更改。想象一下这种情况:如果他们必须创建一个新列来对应一个新属性,那么对于用户来说,在每次更改时,升级所需的数据库更改是多么困难。
事实上,像Wordpress这样的CMS中使用的大多数动态数据库都有这样的概念,可以方便地进行更改。其他类型的系统也会这样做

我明白,我不是想攻击某人或某事。但我的问题是:我应该选择哪条路线?WP方法是否有损于查询速度?您应该选择更适合您的目标的方法。我的意思是,如果您预见到您的解决方案在未来的新属性方面不会增长,请使用列。现在,如果您看到复杂性随着时间的推移而增长,那么动态属性表可能是最好的方法。因此,为了向OP提供针对其情况的建议,请使数据库具体化,因为您拥有完全的控制权,并将所有相关字段放在一行中。另外一个信息:如果您的数据库经过良好的调优,性能不会受到影响。此外,如果您想降低查询的复杂性,可以使用视图来隐藏底层的复杂性,甚至可以创建一个更非规范化的数据库来报告细节。
-------------------------------------------------------------------
 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